Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS für Luftdaten.info

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Featurewunsch] LBS für Luftdaten.info

    Hallo,

    hat schon jemand den Sensor von Luftdaten.info in Edomi eingebunden?
    Kurze Zusammenfassung:
    Bei luftdaten.info geht es darum die Partikel in der Luft zu messen.
    Das ganze funktioniert über ein Arduino Board via WLAN.
    Die Bauteile kosten zusammen im mittleren zweistelligen Bereich.
    Mit einem BME280 hat man neben den Partikeln auch rel. Luftfeuchte, Luftdruck und Temperatur erschlagen.


    Man muss seine Daten nicht freigeben, sondern kann die Daten auch lokal abrufen.
    Da ich ne Programmiernull bin

    Daten stehen localBild2222.jpg u.a. per html und json bereit.


    Angehängte Dateien

    #2
    Interessiert mich!
    Ich hab grad keine Zeit nen Arduino dafuer zusammenzubauen, kannst Du mir bitte die URL sagen die aufgerufen werden muss und ein Beispiel-json hier reinstellen? Dann bau ich Dir nen LBS dazu!

    gruesse :: Michael

    Kommentar


      #3
      Ich hatte gehofft jemanden "anfixen" zu können:
      URL: "IP/data.json"
      Rohdaten"{"software_version": "NRZ-2017-078", "sensordatavalues":[{"value_type":"SDS_P1","value":"21.17"},{"value_ty pe":"SDS_P2","value":"12.27"},{"value_type":"BME28 0_temperature","value":"21.76"},{"value_type":"BME 280_humidity","value":"60.68"},{"value_type":"BME2 80_pressure","value":"99350.75"},{"value_type":"sa mples","value":"812555"},{"value_type":"min_micro" ,"value":"174"},{"value_type":"max_micro","value": "122533"},{"value_type":"signal","value":"-43 dBm"}]}"

      Grüße
      Roland

      Kommentar


        #4
        OK, rufen Sie nicht an, wir melden uns

        Kommentar


          #5
          Was ist letzter Preis?

          Kommentar


            #6
            Ein Huhn aus Gold

            Kommentar


              #7
              Steht da im Ergebnis wirklich
              Code:
              Rohdaten"{...}"

              Kommentar


                #8
                Sicher nicht, das wird ganz sicher nicht der originale Output sein. Aber vielleicht sollte ma mal eine allgemeinen Json LBS machen. Die Daten sollten ja über die Deepth zu selektieren sein.

                Kommentar


                  #9
                  Also wenn es ohne das Rohdaten-Zeuchs ist, dann probiert mal bitte den hier:
                  PHP-Code:
                  ###[DEF]###
                  [name             = luftdaten.info (0.1) ]

                  [e#1  TRIGGER    = Trigger                ]
                  [e#2  IMPORTANT    = IP    #init=127.0.0.1    ]
                  [e#11 OPTIONAL    = LogLevel    #init=0        ]

                  [a#1            = Fehler        ]
                  [a#2            = SDS_P1        ]
                  [a#3            = SDS_P2        ]
                  [a#4            = Temperatur    ]
                  [a#5            = Feuchte        ]
                  [a#6            = Luftdruck        ]
                  [a#7            = Samples        ]
                  [a#8            = min_micro        ]
                  [a#9            = max_micro        ]
                  [a#10            = Signal        ]
                  [a#11            = Firmware        ]

                  ###[/DEF]###


                  ###[HELP]###

                  <hr/>
                  E1:  Triggert den Baustein bei einem Wert &ne;leer
                  E2:  IP
                  E11: LogLevel

                  A1: Textuelle Fehlermeldung oder 0

                  <hr/>
                  <b><u>Changelog</u></b>
                  0.1:
                  -initiale Version
                  ###[/HELP]###


                  ###[LBS]###
                  <?
                  function LB_LBSID($id) {
                      if ($E=logic_getInputs($id)) {
                          if ($E[1]['refresh'] && $E[1]['value']) {
                              LB_LBSID_debug($id,"Starte LBS-Teil");
                              if (!$E[2]['value']) {
                                  LB_LBSID_debug($id,"Abbruch, keine IP konfiguriert",0);
                                  logic_setOutput($id,1,"Fehlende IP");
                              } else {
                                  if (getSysInfo(1)==1) {
                                      LB_LBSID_debug($id,"Starte EXEC-Teil nicht, Baustein initialisiert",7);
                                  } else {
                                      LB_LBSID_debug($id,"Starte EXEC-Teil, Startgrund: Trigger an E1",7);
                                      logic_callExec(LBSID,$id);
                                  }
                              }
                          }
                      }
                  }

                  function LB_LBSID_debug($id,$s,$l=6) {
                      $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                      $E=logic_getInputs($id);
                      $DEBUG=$E[11]['value'];
                      $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
                  }
                  ?>###[/LBS]###


                  ###[EXEC]###
                  <?
                  require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");

                  set_time_limit(30);
                  sql_connect();

                  if ($E=logic_getInputs($id)) {
                      $DEBUG=$E[11]['value'];
                      $url="http://".$E[2]['value']."/data.json";
                      $DEBUG && debug("EXEC-Teil startet, fetche URL $url",7);
                      $ch=curl_init();
                      curl_setopt($ch,CURLOPT_URL,$url);
                      curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
                      #curl_setopt($ch,CURLOPT_POST,true);
                      #curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
                      curl_setopt($ch,CURLOPT_FAILONERROR,true);
                      $result=curl_exec($ch);
                      if(curl_error($ch)) {
                          $DEBUG && debug("HTTP Error: ".curl_error($ch),1);
                          logic_setOutput($id,1,"HTTP Error: ".curl_error($ch));
                          curl_close($ch);
                          exit();
                      }
                      curl_close($ch);

                      $li=json_decode($result,true);
                      logic_setOutput($id,11,$li['software_version']);
                      logic_setOutput($id,2,$li['sensordatavalues']['0']['value']+0);
                      logic_setOutput($id,3,$li['sensordatavalues']['1']['value']+0);
                      logic_setOutput($id,4,$li['sensordatavalues']['2']['value']+0);
                      logic_setOutput($id,5,$li['sensordatavalues']['3']['value']+0);
                      logic_setOutput($id,6,$li['sensordatavalues']['4']['value']+0);
                      logic_setOutput($id,7,$li['sensordatavalues']['5']['value']+0);
                      logic_setOutput($id,8,$li['sensordatavalues']['6']['value']+0);
                      logic_setOutput($id,9,$li['sensordatavalues']['7']['value']+0);
                      logic_setOutput($id,10,$li['sensordatavalues']['8']['value']+0);

                      logic_setOutput($id,1,0);
                      $DEBUG && debug("EXEC Teil beendet",7);
                  }
                  sql_disconnect();

                  function debug($s,$l=6) {
                      $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                      global $DEBUG,$id;
                      $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
                  }

                  ?>
                  ###[/EXEC]###

                  Kommentar


                    #10
                    Zitat von vento66 Beitrag anzeigen
                    Aber vielleicht sollte ma mal eine allgemeinen Json LBS machen. Die Daten sollten ja über die Deepth zu selektieren sein.
                    Der Anfang waere ja hier: https://knx-user-forum.de/forum/proj...07#post1093607

                    Was ist Deepth?

                    Davon ab finde ich aber, dass so generelle Bausteine das ganze nur komplizierter als einfacher machen. Ich wuesste nicht wie man sowas bei JSON vernueftig umsetzen koennte (ohne in der "Bedienung" des LBS mindestens genauso viel Kenntnis beim Programmieren zu haben - ist ja alles nur Copy&Paste, siehe den Code oben).
                    Was ja mal jemand schreiben koennte waere so ein HS-aehnlicher Webseite-Parsen-LBS. Faend ich aber auch und trotzdem doov, fuerchte ich

                    Kommentar


                      #11
                      Mal wieder ein seeehr interressantes Projekt für die kalten Tage.
                      Und ich dachte schon im Herbst/Winter würde es für mich langweilig.

                      Kommentar


                        #12
                        Wintermute
                        Funktioniert perfekt!
                        Schlaf ihr eigentlich nie?
                        Angehängte Dateien

                        Kommentar


                          #13
                          Zitat von vento66 Beitrag anzeigen
                          Sicher nicht, das wird ganz sicher nicht der originale Output sein. Aber vielleicht sollte ma mal eine allgemeinen Json LBS machen. Die Daten sollten ja über die Deepth zu selektieren sein.
                          Ich hatte vor kurzem einen einfachen LBS hochgeladen, der eine URL aufruft und auf gültigen JSON-String prüft.

                          Zusammen mit weiteren JSON-LBS lassen sich so iKOs belegen:

                          http://service.knx-user-forum.de/?co...ad&id=19000933

                          http://service.knx-user-forum.de/?co...ad&id=19000973

                          Edit: Sehe gerade, dass das oben schon jemand erwähnt hat. Sorry...





                          Zuletzt geändert von MrIcemanLE; 14.05.2017, 10:20.
                          Gruß
                          Stefan

                          Kommentar


                            #14
                            Zitat von Roland81 Beitrag anzeigen
                            Funktioniert perfekt!
                            Prima, dann schreib ich beizeiten noch ne Hilfe und lad den dann hoch...

                            Kommentar


                              #15
                              MrIcemanLE: Deinen Baustein hatte ich natürlich vorher probiert, allerdings den Fehler " Result not a JSON-String or deeper than 1" bekommen.

                              Kommentar

                              Lädt...
                              X