[SDK] SDK PHP pour la Zibase

Comment interfacer la Zibase avec Homeseer ? Comment programmer votre Zibase avec un script ? Comment capturer les informations de la Zibase ...

Re: [SDK] SDK PHP pour la Zibase

Messagede ZygOm4t1k » 16 Oct 2013, 16:19

je récupère l'Id du module via le sdk

Code: Tout sélectionner
   public function getSensorListFromInternet($idZibase, $tokenZibase) {
      $url = "http://zibase.net/m/get_xml.php?device=".$idZibase."&token=".$tokenZibase;
      $handle = fopen($url, "rb");
      $xmlContent = stream_get_contents($handle);
      fclose($handle);
      $i = 0;
      $xmlDoc = simplexml_load_string($xmlContent);
      $node = $xmlDoc->xpath('//e');
      foreach ($node as $ua) {
         $attributes = $ua[0]->attributes();
         $info[$i]['c'] = $attributes["c"];
         $info[$i]['n'] = $ua->n;
         $info[$i]['t'] = $attributes["t"];
         $info[$i]['i'] = $attributes["i"];
         $info[$i]['p'] = $attributes["p"];
         $info[$i]['f'] = $attributes["f"];
         $i = $i + 1;
      }
      return $info;
   }
   
ZygOm4t1k
Dieu de domotique
 
Messages: 238
Inscription: 25 AoĂ» 2012, 18:40

Re: [SDK] SDK PHP pour la Zibase

Messagede Cmoi20 » 17 Oct 2013, 07:15

Il faudrait vérifier mais il me semble que la valeur retournée par le script de récupération des périphériques contient des éléments a supprimer en début de valeur.

ZA1 doit être modifié en A1 et pour OS1111111 il faudrait quelques tests pour savoir quoi garder exactement.

Cmoi20
1 JeeDom mini = RFXCOM en esclave | 1 OWL CM180 | 1 Prolian ML350 G5 avec JeeDom maitre | 1 DAS HP MSA20
3 modules Fibaro FGBS321 avec 12 sondes 1Wire DS18B20 cablés en RJ45 (sonde sertie directement dans la tete RJ45)
7 contacts sec Fibaro FGS211 | 1 double contact sec Fibaro FGS221 | 7 WallPlugs Fibaro | 5 dimmers Fibaro FGD-211
1 Anémomètre WGR800 et 1 Sonde Thermomètre Hygromètre THGN801 alimentés par Capteur solaire STC800
1 detecteur d'inondation Fibaro FGFS-101
Cmoi20
Dieu de domotique
 
Messages: 967
Inscription: 20 Juin 2013, 12:53
Localisation: Laventie

Re: [SDK] SDK PHP pour la Zibase

Messagede Cmoi20 » 17 Oct 2013, 10:21

j'ai vérifier et cela devrait fonctionner sans rien de plus.
1 JeeDom mini = RFXCOM en esclave | 1 OWL CM180 | 1 Prolian ML350 G5 avec JeeDom maitre | 1 DAS HP MSA20
3 modules Fibaro FGBS321 avec 12 sondes 1Wire DS18B20 cablés en RJ45 (sonde sertie directement dans la tete RJ45)
7 contacts sec Fibaro FGS211 | 1 double contact sec Fibaro FGS221 | 7 WallPlugs Fibaro | 5 dimmers Fibaro FGD-211
1 Anémomètre WGR800 et 1 Sonde Thermomètre Hygromètre THGN801 alimentés par Capteur solaire STC800
1 detecteur d'inondation Fibaro FGFS-101
Cmoi20
Dieu de domotique
 
Messages: 967
Inscription: 20 Juin 2013, 12:53
Localisation: Laventie

Re: [SDK] SDK PHP pour la Zibase

Messagede ZygOm4t1k » 17 Oct 2013, 14:22

cela fonctionne un moment puis je pense que la zibase est saturée par les demandes donc ça bloque.
ZygOm4t1k
Dieu de domotique
 
Messages: 238
Inscription: 25 AoĂ» 2012, 18:40

Re: [SDK] SDK PHP pour la Zibase

Messagede Cmoi20 » 17 Oct 2013, 15:27

peut être serait-il possible de corriger ce problème en ajoutant une temporisation entre chaque requêtes.
1 JeeDom mini = RFXCOM en esclave | 1 OWL CM180 | 1 Prolian ML350 G5 avec JeeDom maitre | 1 DAS HP MSA20
3 modules Fibaro FGBS321 avec 12 sondes 1Wire DS18B20 cablés en RJ45 (sonde sertie directement dans la tete RJ45)
7 contacts sec Fibaro FGS211 | 1 double contact sec Fibaro FGS221 | 7 WallPlugs Fibaro | 5 dimmers Fibaro FGD-211
1 Anémomètre WGR800 et 1 Sonde Thermomètre Hygromètre THGN801 alimentés par Capteur solaire STC800
1 detecteur d'inondation Fibaro FGFS-101
Cmoi20
Dieu de domotique
 
Messages: 967
Inscription: 20 Juin 2013, 12:53
Localisation: Laventie

Re: [SDK] SDK PHP pour la Zibase

Messagede ZygOm4t1k » 17 Oct 2013, 16:50

cela mettrait trop de temps pour tous les modules.

Une idée pour trouver le retour d'état suite à copie du fichier en local?
ZygOm4t1k
Dieu de domotique
 
Messages: 238
Inscription: 25 AoĂ» 2012, 18:40

Re: [SDK] SDK PHP pour la Zibase

Messagede thebest28 » 17 Oct 2013, 18:32

Si cela peut vous aider , j'ai trouvé ce code sur le forum d'openremote que j'utilise pour le retour d'etat en local pour les peripheriques zwave , il faut avoir fait une copie du xml de la zibase avant.

Code: Tout sélectionner
<?php
  $url = "http://localhost/sensors.xml";  //adapter avec l'adresse de votre sensors.xml
  $table = "zwtab";  // remplacer zwtab par x10tab pour lire l'Ă©tat des pĂ©riphĂ©riques X10

  $dom_doc = new DomDocument('1.0', 'iso-8859-1'); // iso-8859-1 ou utf-8 selon le codage que vous utilisez
  $dom_doc->load($url);
  $tab = $dom_doc->getElementsByTagName($table)->item(0)->nodeValue;

  // On rĂ©cupère les 64 quartets et on remplit le tableau h (hexa)
  // <Ax><Ay><Bx><By> ... <Px><Py>
  //
  for ($i=0;$i<64;$i++) {
    $h[$i]=hexdec(substr($tab,$i,1));
  }
 
  // On gĂ©nère une chaine de caractères "binaire" en little endian
  // <a7>...<a0><a15>...<a8><b7>...<b0><b15>...<b8><c7>... etc.
  //
  $chaine='';
  for ($i=0;$i<64;$i++) {
    $w[$i]=($h[$i]&1);      // bit 0
    $x[$i]=($h[$i]&2)/2;   // bit 1
    $y[$i]=($h[$i]&4)/4;   // bit 2
    $z[$i]=($h[$i]&8)/8;   // bit 3
    $chaine.=sprintf("%b%b%b%b",$z[$i],$y[$i],$x[$i],$w[$i]);
  }

  // On gĂ©nère 16 chaines (1 par pĂ©riphĂ©rique) en big endian
  // Les 16 bits sont rĂ©ordonnĂ©s poids fort en tĂŞte
  // 1 tableau = 1 famille
  // Z[0]  = <a15>...<a8><a7>...<a0> (famille ZA)
  // Z[1]  = <b15>...<b8><b7>...<b0> (famille ZB)
  // ...
  // Z[15] = <p15>...<p8><p7>...<p0> (famille ZP)
  //
  for ($i=0;$i<16;$i++) {
    $Z[$i] =sprintf("%s",substr($chaine,$i*16+8,4));
    $Z[$i].=sprintf("%s",substr($chaine,$i*16+12,4));
    $Z[$i].=sprintf("%s",substr($chaine,$i*16,4));
    $Z[$i].=sprintf("%s",substr($chaine,$i*16+4,4));
  }

  // Pour chacune des 16 familles ZX on gĂ©nère 16 pĂ©riphĂ©riques ZZ
  // ZZ[0][0]  = pĂ©riphĂ©rique ZA1 ... ZZ[0][15]  = pĂ©riphĂ©rique ZA16
  // ...
  // ZZ[15][0] = pĂ©riphĂ©rique ZP1 ... ZZ[15][15] = pĂ©riphĂ©rique ZP16
  //
  for ($i=0 ; $i<16 ; $i++) {
    for ($j=0 ; $j<16 ; $j++) {
      $ZZ[$i][15-$j] = substr($Z[$i],$j,1);
    }
  }
/*
  // On gĂ©nère le fichier xml "Ă  la mano" pour les 256 pĂ©riphĂ©riques ZWave
  // Format :
  //    <?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
  //   <peripheriques>
  //     <zwave>
  //      <device id="ZA1" etat='0' />
  //      ...
  //      <device id="ZP15" etat='0' />
  //     </zwave>
  //   </peripheriques>
  //
  // Modèle XPath : //device[@id='ZA1']/@etat
  //
*/

//header ("Content-Type:text/xml");

//header("Content-Type: application/force-download"); // ENREGISTREMENT DU FICHIER


  $xml_output  = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
  $xml_output .= "<peripheriques>\n";
  $xml_output .= "  <zwave>\n";

  for ($i=0 ; $i<16 ; $i++) {
    for ($j=0 ; $j<16 ; $j++) {
      $xml_output .= "    <device id=\"Z".sprintf("%c",$i+65);
     $xml_output .= $j+1;
     
      $xml_output .= "\" etat='";
      $xml_output .= $ZZ[$i][$j];
      $xml_output .= "' />\n";
    }
  }
  $xml_output .= "  </zwave>\n";
  $xml_output .= "</peripheriques>\n";
 
  file_put_contents ('etatdevicezwave.xml', $xml_output);
?>


cela va génerer un xml de tous les codes zwave , ensuite il suffit de piocher dedand pour le retour d'etat.
Pour le x10 , il suffit de faire pareil en utilisant la table x10 de la copie du xml de la zibase.
_________________
RF 642 / 4 detect mvt CH54503 chacon /
detect mvt exterieur chacon / VISONIC - NEXTK985MCW / douille coco / cod18 / sd18
1 télécommande kr18 / dio chacon / 5 prise chacon 3500W / 3 tyxia delta dore 461 / 3 module ON/OFF chacon 1000W / sirène FOCUS MD-214R / 2 oregon scientific THGR810
/ cam edimax 7010ptz / itach ir wifi / logiciel HC-SKIPPER / Zibase / Roomba 780
thebest28
Dieu de domotique
 
Messages: 1261
Inscription: 20 Juil 2011, 14:16
Localisation: Liège

Re: [SDK] SDK PHP pour la Zibase

Messagede Cmoi20 » 17 Oct 2013, 21:41

la copie du fichier en local n’empêche pas la récupération de chaque état lors de la requête. De plus, la récupération du fichier se fait sur les serveurs zodianet. il ne semble pas que les serveurs zodianet soient surchargés.
une tempo de 10 ou 100 millisecondes pourrait suffire pour faire respirer la zibase entre 2 requĂŞtes.
1 JeeDom mini = RFXCOM en esclave | 1 OWL CM180 | 1 Prolian ML350 G5 avec JeeDom maitre | 1 DAS HP MSA20
3 modules Fibaro FGBS321 avec 12 sondes 1Wire DS18B20 cablés en RJ45 (sonde sertie directement dans la tete RJ45)
7 contacts sec Fibaro FGS211 | 1 double contact sec Fibaro FGS221 | 7 WallPlugs Fibaro | 5 dimmers Fibaro FGD-211
1 Anémomètre WGR800 et 1 Sonde Thermomètre Hygromètre THGN801 alimentés par Capteur solaire STC800
1 detecteur d'inondation Fibaro FGFS-101
Cmoi20
Dieu de domotique
 
Messages: 967
Inscription: 20 Juin 2013, 12:53
Localisation: Laventie

Re: [SDK] SDK PHP pour la Zibase

Messagede ZygOm4t1k » 19 Oct 2013, 13:30

MĂŞme avec un tempo cela ne fonctionne pas.

Au coup par coup ça va mais pour lister l'état de tous ses modules cela ne va pas.

Pas facile de récupérer ce fichu état du module!!

merci thebest28 je connaissais ce script qui provient du post d' e1000 sur ce forum ==> ICI
ZygOm4t1k
Dieu de domotique
 
Messages: 238
Inscription: 25 AoĂ» 2012, 18:40

Re: [SDK] SDK PHP pour la Zibase

Messagede thebest28 » 19 Oct 2013, 13:40

Ha merci de m'avoir rafraichi la mémoire pour son pseudo e1000 :)
_________________
RF 642 / 4 detect mvt CH54503 chacon /
detect mvt exterieur chacon / VISONIC - NEXTK985MCW / douille coco / cod18 / sd18
1 télécommande kr18 / dio chacon / 5 prise chacon 3500W / 3 tyxia delta dore 461 / 3 module ON/OFF chacon 1000W / sirène FOCUS MD-214R / 2 oregon scientific THGR810
/ cam edimax 7010ptz / itach ir wifi / logiciel HC-SKIPPER / Zibase / Roomba 780
thebest28
Dieu de domotique
 
Messages: 1261
Inscription: 20 Juil 2011, 14:16
Localisation: Liège

Re: [SDK] SDK PHP pour la Zibase

Messagede Cmoi20 » 31 Oct 2013, 15:29

Bonjour,

J'ai mis en place des pages récupérant le retour d'état de plusieurs actionneurs : capteurs avec succès. Le problème ne doit donc pas venir de la zibase.
De combien de retour d'Ă©tat parle-t-on ici ?


Autre sujet, je recherche la solution permettant de gérer l'ensemble des périphériques de la zibase. Il semble que l'association/dissociation soit disponible dans les ZAPI. Toutefois, je n'ai pas trouvé de trace de possibilité d'enregistrer/modifier/supprimer les périphériques correspondants.

Je cherche également le moyen de récupérer la liste exhaustive des périphériques de la zibase. Les fichiers XML ne contiennent que les périphériques visibles dans les interfaces utilisateurs.

Si vous avez une piste, merci d'avance pour votre aide,

Cordialement,

Cmoi20
1 JeeDom mini = RFXCOM en esclave | 1 OWL CM180 | 1 Prolian ML350 G5 avec JeeDom maitre | 1 DAS HP MSA20
3 modules Fibaro FGBS321 avec 12 sondes 1Wire DS18B20 cablés en RJ45 (sonde sertie directement dans la tete RJ45)
7 contacts sec Fibaro FGS211 | 1 double contact sec Fibaro FGS221 | 7 WallPlugs Fibaro | 5 dimmers Fibaro FGD-211
1 Anémomètre WGR800 et 1 Sonde Thermomètre Hygromètre THGN801 alimentés par Capteur solaire STC800
1 detecteur d'inondation Fibaro FGFS-101
Cmoi20
Dieu de domotique
 
Messages: 967
Inscription: 20 Juin 2013, 12:53
Localisation: Laventie

Re: [SDK] SDK PHP pour la Zibase

Messagede lfontana » 02 DĂ©c 2013, 22:51

Bonjour,

j'utilise jusqu’à présent avec succès le sdk php. En particulier pour envoyer sur ma zibase mes données de ma station netatmo a l'aide de la fonction sendVirtualProbeValues. Le php fonctionnant sur un raspberry pi.

Avec l’arrivée des températures négatives, la fonction sendVirtualProbeValues a un comportement anormal.
La zibase décode bien la température mais l’humidité passe a 255% et le flag low batterie est active.

Par exemple avec l'appel sendVirtualProbeValues(3391881218, -9, 81, 0, ZbVirtualProbe::OREGON)
la zibase recoit : Received radio ID (INTERNAL Noise=0 Level=0.0/5 RT-TH/GR328N Ch=2 T=-0.9°C (+30.3°F) Humidity=255% Batt=Low) Temp Ext Netatmo (OS3391881218)
Le codage/decodage de la temperature est ok mais les autres donnees sont perdues...
Le "OU" logique avec un entier négatif renvoi toujours cet entier négatif ... : -9 | (81 & 0xFF) << 0x10 = -9 ....

Quelqu'un aurait-il une idée pour résoudre ce problème ?

Merci d'avance,
lfontana
Zibase 2S
3x Fibaro Wallplug
2x relais Fibaro double
4x detecteur ouverture Fibaro
1x capteur eau Gianola avec 1 detecteur universel Fibaro
1x module volet roulant Fibaro
3x sonde 1Wire
1x OWL 160
11 volet Somfy RTS
3x sonde ST814
Rasperry pi
Station NetAtmo
lfontana
Membre un peu timide !
 
Messages: 2
Inscription: 02 DĂ©c 2013, 21:55

PrécédenteSuivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique