Ankündigung

Einklappen
Keine Ankündigung bisher.

Netatmo | Edomi

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
    Zaschii
    Forums-Einsteiger

  • Zaschii
    antwortet
    Unter CentOS7 und Edomi 2 treten immer mal wieder folgende Fehler auf, hat hierzu jemand eine Lösung....

    Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000500.php | Fehlercode: 8 | Zeile: 110 | Undefined index: body ERROR
    Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000500.php | Fehlercode: 2 | Zeile: 110 | Invalid argument supplied for foreach()

    Einen Kommentar schreiben:

  • coliflower
    Forums-Einsteiger

  • coliflower
    antwortet
    Ich kann nur vermuten, dass du in Edomi am LBS-Eingang (für den Loglevel) nichts eingeben hast ...

    Einen Kommentar schreiben:


  • nno
    antwortet
    Hallo,
    würde gerne den Netatmo LBS 19000291 verwenden um meinen Regensonsor auszulesen. Kann ich den LBS alleine verwenden oder muss der Basis LBS 19000290 auch in Edomi importiert werden?

    Im Moment habe ich nur den 19000291 importiert und bekomme beim Projekt aktivieren immer folgenden Eintrag im Edomi Fehler Log:
    Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000291.php | Fehlercode: 8 | Zeile: 310 | Undefined variable: user_log_level

    Es scheint wohl an der function LB_19000291_Finish($id) { ... } zu liegen. Wenn ich dort die Zeile
    PHP-Code:
    LB_LBSID_Debug($id"Netatmo Module Wind/Regen EXEC -> wurde beendet \n",6$user_log_levelFALSE); 
    in
    PHP-Code:
    LB_LBSID_Debug($id"Netatmo Module Wind/Regen EXEC -> wurde beendet \n",60FALSE); 
    ändere kommt der Fehler nicht mehr.

    Einen Kommentar schreiben:

  • tunneltruppe
    KNX Anwender

  • tunneltruppe
    antwortet
    Hallo Dominik,
    vielen DANK dafür!! Klappt alles sehr gut!!!!

    Gruß Marcus

    Einen Kommentar schreiben:


  • Dosim
    antwortet
    und das Zusatz Modul :
    PHP-Code:
    ###[DEF]###
    [name        =Netatmo Basis Indoor Zustatzmodul (v1.3)    ]

    [e#1 TRIGGER            = Starten #init=1]
    [e#2 IMPORTANT        = CLIENT_ID ]
    [e#3 IMPORTANT        = CLIENT_SECRET ]
    [e#4 IMPORTANT        = USERNAME ]
    [e#5 IMPORTANT        = PASSWORD ]
    [e#6                = StationName ]
    [e#7 IMPORTANT        = Modulname #init=Badezimmer]
    [e#8                = LogLevel  #init=0]


    [a#1        =Name Modul    ]
    [a#2        =Temperature    ]
    [a#3        =min temp    ]
    [a#4        =min time    ]
    [a#5        =max temp    ]
    [a#6        =max time    ]
    [a#7        =temp trend    ]
    [a#8        =Humidity    ]
    [a#9        =CO2    ]
    [a#10        =Battery    ]
    [a#11        =WiFi    ]
    [a#12        =ID    ]
    [a#13        =Typ    ]
    [a#14        =Firmware    ]
    [a#15        =Join    ]
    [a#16        =Debug    ]

    [v#1        = 0    ]


    [v#100    = 1.3 ]
    [v#101    = 19000299 ]
    [v#102    = Netatmo Basis Indoor Zusatzmodul ]
    [v#103    = 0 ]

    ###[/DEF]###


    ###[HELP]###
    <h2>NETATMO Basis Indoor Zusatzmodul</h2>

    ++++++++++++++++++++++++++++++++++++++++++++++
    ++    !!!!ACHTUNG!!! Ab Version 1.5 neue Classen und Pfade.     ++
    ++++++++++++++++++++++++++++++++++++++++++++++

    Diese Dateien mussen im Ordner /usr/local/edomi/main/include/php liegen.
    -> Ordner /Netatmo-API-PHP/...


    <h2>Ein- und Ausgänge</h2>
    <h3>Eingäne</h3>
    Der NETATMO Baustein wird automatisch gestartet, sobald EDOMI gestartet wird (E1 hat den Initialwert 1).
    E1: Signal 1 = Startet Baustein (Dämon)
    E2: CLIENT ID
    E3: CLIENT SECRET
    E4: Username
    E5: Passwort
    E6: Station Name (wenn nur eine Station im Netatmo Account dann leer lassen)
    E7: Modulname
    E8: LogLevel

    <h3>Ausgänge</h3>            
    A1: Name Modul
    A2: Temperatur
    A3: min Temperatur
    A4: min Temperarur Uhrzeit
    A5: max Temperatur
    A6: max Temperarur Uhrzeit
    A7: Temperatur trend (stable / up / down)
    A8: Humidity
    A9: CO2
    A10: Battery (full, high, medium, low, very low)
    A11: WiFi
    A12: Geräte-ID
    A13: Geräte-Typ
    A14: Firmware
    A15: Join (Listenausgabe von A1 - A14 durch | getrennt. KO EIngabe im Visuelement durch {split(0)}, {split(1)} usw..) A1 = {split(1)}    
    A16: Debug Ausgang

    V1: Dämon


    <h3>Changelog:</h3>
    ==========
    v1.1: Initial version
    v1.2: A12 als Join/Liste eingefügt.
    v1.3: Erweiterung um A6 Modulname. Ausgänge A9,A12,A13,A14 eingefügt (Danke an Klaus Muckelmann)


    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=logic_getInputs($id)) {

            if ($E[1]['value']!=0 && $E[1]['refresh']==1) {

                if (logic_getVar($id,1)==0) {    
                    logic_setVar($id,1,1);
                    logic_callExec(LBSID,$id);
                }

            }

        }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    require_once (dirname(__FILE__).'/../../../../main/include/php/Netatmo-API-PHP/src/Netatmo/autoload.php');

    set_time_limit(0);
    sql_connect();




    function LB_LBSID_Debug($id,$message,$LBS_loglevel,$USER_loglevel, $exit = FALSE) {
        setlocale(LC_TIME, "de_DE");
        $E=logic_getInputs($id);
        $version = logic_getVar($id,100);
        $logName = logic_getVar($id,102);
        $a = array("LOG_EMERG","LOG_ALERT","LOG_CRIT","LOG_ERR","LOG_WARNING","LOG_NOTICE","LOG_INFO","LOG_DEBUG");
        $LBS_loglevel<=$USER_loglevel && writeToCustomLog("LBSLBSID" . " - \t[$logName]",$LBS_loglevel,"(ID$id) - " . " " .$a[$LBS_loglevel].": ".$message."\t[v$version]");
        if($LBS_loglevel<=6){
        logic_setOutput($id,12,strftime("%A. %X %Z - %d. %B %Y. - ").$message);   
        }
        if($exit) {
            writeToCustomLog("LBSLBSID" . " - \t[$logName]",$LBS_loglevel,"(ID$id) ".$a[$LBS_loglevel].": LBS wird beendet."."\t[v$version]");
            LB_LBSID_Finish($id);
        }
    }







    if ($E=logic_getInputs($id)) {

            $user_log_level = $E[8]['value'];



    $client_id = $E[2]['value'];
    $client_secret = $E[3]['value'];
    $test_username = $E[4]['value'];
    $test_password = $E[5]['value'];
    $station_name = $E[6]['value'];
    $device_id = $E[7]['value'];

    LB_LBSID_Debug($id, "Netatmo Basis Indoor/Outdoor EXEC -> gestartet \n",6, $user_log_level, FALSE);
    }

    if (empty($client_id))    {
            LB_LBSID_Debug($id, "Fehler beim Initialisieren - keine Client ID an E[2] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($client_secret))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren - kein Client Secret an E[3] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($test_username))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren - kein Username an E[4] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($test_password))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren - kein Passwort an E[5] vorhanden. \n",3, $user_log_level, TRUE);
        }    

    while(getSysInfo(1)>=1) {

    $scope = Netatmo\Common\NAScopes::SCOPE_READ_STATION;
    $config = array("client_id" => $client_id,
                    "client_secret" => $client_secret,
                    "username" => $test_username,
                    "password" => $test_password);

    $client = new Netatmo\Clients\NAWSApiClient($config);


        try
        {
                $tokens = $client->getAccessToken();
        }
        catch(Netatmo\Exceptions\NAClientException $ex)
        {
            LB_LBSID_Debug($id, "Fehler beim Aufrufen des Tokens: " .$ex->getMessage()."\n",3, $user_log_level, FALSE);
        }


        try {

            $data = $client->getData(NULL, TRUE);
        }
        catch(Netatmo\Exceptions\NAClientException $ex) {
            LB_LBSID_Debug($id, "Fehler beim holen der Daten: ". $ex->getMessage()."\n",3, $user_log_level, FALSE);      
        }    

        foreach($data['devices'] as $device)
    {    
        if (  isset( $device['type'] ) && $device['type'] == 'NAMain' && isset( $device['station_name'] ) && ($device['station_name'] == $station_name || $station_name=='') )
        foreach($device['modules'] as $module){

            try
           {

            if (  isset( $module['type'] ) && $module['type'] == 'NAModule4' && $module['module_name'] == $device_id ) {
                $l=array($id);
                if (isset($module['module_name']))     {logic_setOutput($id,1,$l[]=$module['module_name']);}    
                if (isset($module['dashboard_data']["Temperature"]))     {logic_setOutput($id,2,$l[]=$module['dashboard_data']["Temperature"]);}    
                if (isset($module['dashboard_data']["min_temp"]))     {logic_setOutput($id,3,$l[]=$module['dashboard_data']["min_temp"]);}    
                if (isset($module['dashboard_data']['date_max_temp']))     {
                    $date_min_out = $module['dashboard_data']['date_min_temp'];
                    $date_min_out =  date('H:i', $date_min_out);
                    logic_setOutput($id,4,$l[]=$date_min_out);
                }
                if (isset($module['dashboard_data']["max_temp"]))     {logic_setOutput($id,5,$l[]=$module['dashboard_data']["max_temp"]);}    
                if (isset($module['dashboard_data']['date_max_temp']))     {
                    $date_max_out = $module['dashboard_data']['date_max_temp'];
                    $date_max_out =  date('H:i', $date_max_out);
                    logic_setOutput($id,6,$l[]=$date_max_out);
                }
                if (isset($module['dashboard_data']["temp_trend"]))     {logic_setOutput($id,7,$l[]=$module['dashboard_data']["temp_trend"]);}    
                if (isset($module['dashboard_data']["Humidity"]))     {logic_setOutput($id,8,$l[]=$module['dashboard_data']["Humidity"]);}
                if (isset($module['dashboard_data']["CO2"]))     {logic_setOutput($id,9,$l[]=$module['dashboard_data']["CO2"]);}

                        if (isset($module['battery_vp'])){
                            $b=$module['battery_vp'];    
                            switch ($b)
                            {
                                case ($b >= 5500):
                                $c= 'full';
                                break;
                                case ($b>= 5000):
                                $c= 'high';
                                break;
                                case ($b>= 4500):
                                $c= 'medium';
                                break;
                                case ($b>= 4000):
                                $c= 'low';
                                break;
                                case ($b< 4000):
                                $c= 'very low';
                                break;
                                default:
                                $c= 'Error';
                            }
                        }
                logic_setOutput($id,10,$l[]=$c);
                if (isset($module['rf_status']))      {logic_setOutput($id,11,$l[]=$module['rf_status']);}
                if (isset($module['_id']))      {logic_setOutput($id,12,$l[]=$module['_id']);}
                if (isset($module['type']))      {logic_setOutput($id,13,$l[]=$module['type']);}
                if (isset($module['firmware']))      {logic_setOutput($id,14,$l[]=$module['firmware']);}
                logic_setOutput($id,15,join("|",$l));
                }
                }
                catch(Netatmo\Exceptions\NAClientException $ex)
                       {
                        LB_LBSID_Debug($id, "Fehler beim holen der Daten: ". $ex->getMessage()."\n",3, $user_log_level, FALSE);
                        }

        }

    }

        usleep(1000000*300);
    }


    sql_disconnect();

    function LB_LBSID_Finish($id) {
        setlocale(LC_TIME, "de_DE");
        logic_setOutput($id,12,strftime("%A. %X %Z - %d. %B %Y. Baustein wurde beendet"));
        LB_LBSID_Debug($id, "Netatmo Module Wind/Regen EXEC -> wurde beendet \n",6, $user_log_level, FALSE);
        logic_setVar($id,1,0);
        sql_disconnect();
        exit();
    }
    ?>
    ###[/EXEC]###

    Einen Kommentar schreiben:


  • Dosim
    antwortet
    Hier das zugehörige Modul Rain :
    PHP-Code:
    ###[DEF]###
    [name        =Netatmo Module Wind/Regen (v1.6)    ]

    [e#1 TRIGGER        = Starten #init=1]
    [e#2 IMPORTANT        = CLIENT_ID ]
    [e#3 IMPORTANT        = CLIENT_SECRET ]
    [e#4 IMPORTANT        = USERNAME ]
    [e#5 IMPORTANT        = PASSWORD ]
    [e#6                = StationName ]
    [e#7                = LogLevel  #init=0]

    [a#1        =##Wind Sensor##    ]
    [a#2        =Name Modul    ]
    [a#3        =Wind Richtung]
    [a#4        =Wind txt    ]
    [a#5        =Wind Stärke    ]
    [a#6        =Böen Richtung    ]
    [a#7        =Böen Stärke    ]
    [a#8        =maxWind Uhrzeit    ]
    [a#9        =max Wind Richtung    ]
    [a#10        =max Wind Stärke    ]
    [a#11        =Battery    ]
    [a#12        =WiFi    ]
    [a#13        =##Rain Gauger##    ]
    [a#14        =Name Modul    ]
    [a#15        =Regen    ]
    [a#16        =Regen 24    ]
    [a#17        =Regen 1    ]
    [a#18        =Battery    ]
    [a#19        =WiFi    ]
    [a#20        =Listenausgabe Windsensor    ]
    [a#21        =Listenausgabe Regensensor    ]
    [a#22        =Debug    ]



    [v#1        = 0    ]

    [v#100    = 1.6 ]
    [v#101    = 19000291 ]
    [v#102    = Netatmo Module Wind/Regen ]
    [v#103    = 0 ]

    ###[/DEF]###


    ###[HELP]###
    <h2>NETATMO Basis Baustein für Station Indoor und Modul Outdoor</h2>

    ++++++++++++++++++++++++++++++++++++++++++++++
    ++    !!!!ACHTUNG!!! Ab Version 1.5 neue Classen und Pfade.     ++
    ++++++++++++++++++++++++++++++++++++++++++++++

    Diese Dateien mussen im Ordner /usr/local/edomi/main/include/php liegen.
    -> Ordner /Netatmo-API-PHP/...


    <h2>Ein- und Ausgänge</h2>
    <h3>Eingäne</h3>
    Der NETATMO Baustein wird automatisch gestartet, sobald EDOMI gestartet wird (E1 hat den Initialwert 1).
    E1: Signal 1 = Startet Baustein (Dämon)
    E2: CLIENT ID
    E3: CLIENT SECRET
    E4: Username
    E5: Passwort
    E6: Station Name (wenn nur eine Station im Netatmo Account dann leer lassen)
    E7: LogLevel 0-8

    <h3>Ausgänge</h3>        
    A1: ##Wind Sensor##  (Keine Ausgabe)
    A2: Name Modul
    A3: Wind Richtung
    A4: Wind txt   NO (121°)
    A5: Wind Stärke
    A6: Böen Richtung
    A7: Böen Stärke
    A8: max Wind Uhrzeit
    A9: max Wind Richtung
    A10: max Wind Stärke
    A11: Battery (full, high, medium, low, very low)
    A12: WiFi (Signalstärke)
    A13: ##Rain Gauger## (keine Ausgabe)
    A14: Name Modul
    A15: Regen
    A16: Regen /24h
    A17: Regen /1h
    A18: Battery (full, high, medium, low, very low)
    A19: WiFi (Signalstärke)
    A20: Join (Listenausgabe von A1 - A12 durch | getrennt. KO EIngabe im Visuelement durch {split(0)}, {split(1)} usw..) A1 = {split(1)} usw...
    A21: Join (Listenausgabe von A14 - A19 durch | getrennt. KO EIngabe im Visuelement durch {split(0)}, {split(1)} usw..) A14 = {split(1)} usw...
    A22: Debug Ausgang

    V1: Dämon    

    <h3>Changelog:</h3>
    ==========
    v1.0: Initial version
    v1.2: Exeptions und LogLevel hinzugefügt    
    v1.5: LBS Code überabrbeitet. Neue Classen und Pfade
    v1.6: A20/A21 als Join/Liste eingefügt. A22 als Debug (vorher A20) verschoben.

    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=logic_getInputs($id)) {

            if ($E[1]['value']!=0 && $E[1]['refresh']==1) {

                if (logic_getVar($id,1)!=1) {    
                    logic_setVar($id,1,1);
                    logic_callExec(LBSID,$id);
                }

            }

        }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    require_once (dirname(__FILE__).'/../../../../main/include/php/Netatmo-API-PHP/src/Netatmo/autoload.php');

    set_time_limit(0);
    sql_connect();



    function LB_LBSID_Debug($id,$message,$LBS_loglevel,$USER_loglevel, $exit = FALSE) {
        setlocale(LC_TIME, "de_DE");
        $E=logic_getInputs($id);
        $version = logic_getVar($id,100);
        $logName = logic_getVar($id,102);
        $a = array("LOG_EMERG","LOG_ALERT","LOG_CRIT","LOG_ERR","LOG_WARNING","LOG_NOTICE","LOG_INFO","LOG_DEBUG");
        $LBS_loglevel<=$USER_loglevel && writeToCustomLog("LBSLBSID" . " - \t[$logName]",$LBS_loglevel,"(ID$id) - " . " " .$a[$LBS_loglevel].": ".$message."\t[v$version]");
        if($LBS_loglevel<=6){
        logic_setOutput($id,22,strftime("%A. %X %Z - %d. %B %Y. - ").$message);     
        }
        if($exit) {
            writeToCustomLog("LBSLBSID" . " - \t[$logName]",$LBS_loglevel,"(ID$id) ".$a[$LBS_loglevel].": LBS wird beendet."."\t[v$version]");
            LB_LBSID_Finish($id);
        }
    }

    if ($E=logic_getInputs($id)) {


    logic_setVar($id,103,$E[7]['value']);
    $user_log_level = $E[6]['value'];    
    $client_id = $E[2]['value'];
    $client_secret = $E[3]['value'];
    $test_username = $E[4]['value'];
    $test_password = $E[5]['value'];
    $station_name = $E[6]['value'];

    LB_LBSID_Debug($id, "Netatmo Module Wind/Regen EXEC -> gestartet \n",6, $user_log_level, FALSE);
    }

    if (empty($client_id))    {
            LB_LBSID_Debug($id, "Fehler beim Initialisieren des LBS - keine Client ID an E[2] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($client_secret))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren des LBS - kein Client Secret an E[3] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($test_username))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren des LBS - kein Username an E[4] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($test_password))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren des LBS - kein Passwort an E[5] vorhanden. \n",3, $user_log_level, TRUE);
    }    

    while(getSysInfo(1)>=1) {

    $scope = Netatmo\Common\NAScopes::SCOPE_READ_STATION;
    $config = array("client_id" => $client_id,
                    "client_secret" => $client_secret,
                   "username" => $test_username,
                    "password" => $test_password);

    $client = new Netatmo\Clients\NAWSApiClient($config);



        try
        {
                $tokens = $client->getAccessToken();

        }
        catch(Netatmo\Exceptions\NAClientException $ex)
        {
            LB_LBSID_Debug($id, "Fehler beim Aufrufen des Tokens: " .$ex->getMessage()."\n",3, $user_log_level, FALSE);
        }



        try {

            $data = $client->getData(NULL, TRUE);

        }
        catch(Netatmo\Exceptions\NAClientException $ex) {
            LB_LBSID_Debug($id, "Fehler beim Abrufen der Daten: ". $ex->getMessage()."\n",3, $user_log_level, FALSE);
        }


    foreach($data['devices'] as $device)
    {

        if (  isset( $device['type'] ) && $device['type'] == 'NAMain' && isset( $device['station_name'] ) && ($device['station_name'] == $station_name || $station_name=='') )
        foreach($device['modules'] as $module){

        try
           {

        if (  isset( $module['type'] ) && $module['type'] == 'NAModule2' ) {
                $l=array($id);
                $l[]="Windsensor";
                if (isset($module['module_name'])) {logic_setOutput($id,2,$l[]=$module['module_name']);}
                if (isset($module['dashboard_data']['WindAngle'])) {logic_setOutput($id,3,$l[]=$module['dashboard_data']['WindAngle']);}        
                if (array_key_exists('WindAngle', $module['dashboard_data'])){
                            $v1 = $module['dashboard_data']['WindAngle'];

                        switch ($v1)

                        {    
                            case ($v1>=348.75 && $v1<11.25):
                                $ritxtla = 'Nord';
                                $ritxtku = 'N';
                                $rinum = '0';
                                break;
                            case ($v1>=11.25 && $v1<33.75):
                                $ritxtla = 'Nord-Nordost';
                                $ritxtku = 'NNO';
                                $rinum = '1';
                                break;
                            case ($v1>=33.75 && $v1<56.25):
                                $ritxtla = 'Nord-Ost';
                                $ritxtku = 'NO';
                                $rinum = '2';
                                break;
                            case ($v1>=56.25 && $v1<78.75):
                                $ritxtla = 'Ost-Nordost';
                                $ritxtku = 'ONO';
                                $rinum = '3';
                                break;
                            case ($v1>=78.75 && $v1<101.25):
                                $ritxtla = 'Ost';
                                $ritxtku = 'O';
                                $rinum = '4';
                                break;
                            case ($v1>=101.25 && $v1<123.75):
                                $ritxtla = 'Ost-Südost';
                                $ritxtku = 'OSO';
                                $rinum = '5';
                                break;
                            case ($v1>=123.75 && $v1<146.25):
                                $ritxtla = 'Süd-Ost';
                                $ritxtku = 'SO';
                                $rinum = '6';
                                break;
                            case ($v1>=146.25 && $v1<168.75):
                                $ritxtla = 'Süd-Südost';
                                $ritxtku = 'SSO';
                                $rinum = '7';
                                break;
                            case ($v1>=168.75 && $v1<191.25):
                                $ritxtla = 'Süd';
                                $ritxtku = 'S';
                                $rinum = '8';
                                break;
                            case ($v1>=191.25 && $v1<213.75):
                                $ritxtla = 'Süd-Südwest';
                                $ritxtku = 'SSW';
                                $rinum = '9';
                                break;
                            case ($v1>=213.75 && $v1<=236.25):
                                $ritxtla = 'Süd-West';
                                $ritxtku = 'SW';
                                $rinum = '10';
                                break;
                            case ($v1>=236.25 && $v1<=258.75):
                                $ritxtla = 'West-Südwest';
                                $ritxtku = 'WSW';
                                $rinum = '11';
                                break;
                            case ($v1>=258.75 && $v1<=281.25):
                                $ritxtla = 'West';
                                $ritxtku = 'W';
                                $rinum = '12';
                                break;
                            case ($v1>=281.25 && $v1<=303.75):
                                $ritxtla = 'West-Nordwest';
                                $ritxtku = 'WNW';
                                $rinum = '13';
                                break;
                            case ($v1>=303.75 && $v1<=326.25):
                                $ritxtla = 'Nord-West';
                                $ritxtku = 'NW';
                                $rinum = '14';
                                break;
                            case ($v1>=326.25 && $v1<=348.75):
                                $ritxtla = 'Nord-Nordwest';
                                $ritxtku = 'NNW';
                                $rinum = '15';
                                break;
                            default:
                            $ritxtku= 'N/A';
                            $ritxtla= 'N/A';
                            $rinum= 'N/A';
                        }
                        }

                logic_setOutput($id,4,$l[]=$ritxtku." (".$module['dashboard_data']['WindAngle']."°)");

                if (isset($module['dashboard_data']['WindStrength'])) {logic_setOutput($id,5,$l[]=$module['dashboard_data']['WindStrength']);}

                if (isset($module['dashboard_data']["GustAngle"])) {logic_setOutput($id,6,$l[]=$module['dashboard_data']["GustAngle"]);}

                if (isset($module['dashboard_data']["GustStrength"])) {logic_setOutput($id,7,$l[]=$module['dashboard_data']["GustStrength"]);}

                if (isset($module['dashboard_data']['date_max_wind_str'])) {
                    $date_max_wind = $module['dashboard_data']['date_max_wind_str'];
                    $date_max_wind =  date('H:i', $date_max_wind);
                    logic_setOutput($id,8,$l[]=$date_max_wind);
                    }


                if (isset($module['dashboard_data']["max_wind_angle"])) {logic_setOutput($id,9,$l[]=$module['dashboard_data']["max_wind_angle"]);}

                if (isset($module['dashboard_data']["max_wind_str"])) {logic_setOutput($id,10,$l[]=$module['dashboard_data']["max_wind_str"]);}

                        if (isset($module['battery_vp'])){

                            $b=$module['battery_vp'];    
                            switch ($b)
                            {
                                case ($b >= 5590):
                                $c= 'full';
                                break;
                                case ($b>= 5180):
                                $c= 'high';
                                break;
                                case ($b>= 4770):
                                $c= 'medium';
                                break;
                                case ($b>= 4360):
                                $c= 'low';
                                break;
                                case ($b< 4360):
                                $c= 'very low';
                                break;
                                default:
                                $c= 'Error';
                            }
                        }
                logic_setOutput($id,11,$l[]=$c);
                if (isset($module['rf_status'])) {logic_setOutput($id,12,$l[]=$module['rf_status']);}
                logic_setOutput($id,20,join("|",$l));

        }
        }

    catch(Netatmo\Exceptions\NAClientException $ex)
                       {
                                LB_LBSID_Debug($id, "Fehler beim Ermitteln der Werte beim Wind Sensor (NAModule2): " . $ex->getMessage() . "\n",3, $user_log_level, FALSE);
                        }



    try
           {    

        if (  isset( $module['type'] ) && $module['type'] == 'NAModule3' ) {
            $m=array();
            $m=array('Regensensor');
                if (isset($module['module_name'])) {logic_setOutput($id,14,$m[]=$module['module_name']);}

                if (isset($module['dashboard_data']['Rain'])) {logic_setOutput($id,15,$m[]=$module['dashboard_data']['Rain']);}

                if (isset($module['dashboard_data']['sum_rain_24'])) {logic_setOutput($id,16,$m[]=$module['dashboard_data']['sum_rain_24']);}

                if (isset($module['dashboard_data']["sum_rain_1"])) {logic_setOutput($id,17,$m[]=$module['dashboard_data']["sum_rain_1"]);}

                        if (isset($module['battery_vp'])){

                            $b=$module['battery_vp'];    
                            switch ($b)
                            {
                                case ($b >= 5500):
                                $c= 'full';
                                break;
                                case ($b>= 5000):
                                $c= 'high';
                                break;
                                case ($b>= 4500):
                                $c= 'medium';
                                break;
                                case ($b>= 4000):
                                $c= 'low';
                                break;
                                case ($b< 4000):
                                $c= 'very low';
                                break;
                                default:
                                $c= 'Error';
                            }
                        }
                logic_setOutput($id,18,$m[]=$c);
                if (isset($module['rf_status'])) {logic_setOutput($id,19,$m[]=$module['rf_status']);}
                logic_setOutput($id,21,join("|",$m));


            }
        }
        catch(Netatmo\Exceptions\NAClientException $ex)
                        {
                                    LB_LBSID_Debug($id, "Fehler beim Ermitteln der Werte beim Regen Sensor (NAModule3): " . $ex->getMessage() . "\n",3, $user_log_level, FALSE);
                        }
    }
    }
        usleep(1000000*359);
    }


    sql_disconnect();

    function LB_LBSID_Finish($id) {
        setlocale(LC_TIME, "de_DE");
        logic_setOutput($id,22,strftime("%A. %X %Z - %d. %B %Y. - "));
        logic_setVar($id,1,0);
        LB_LBSID_Debug($id, "Netatmo Module Wind/Regen EXEC -> wurde beendet \n",6, $user_log_level, FALSE);
        sql_disconnect();
        exit();
    }

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

    Einen Kommentar schreiben:


  • Dosim
    antwortet
    Hier wäre der geänderte Code für das Basis Modul - Neu ist e6
    Die Änderungen am Code kann man ja mit Winmerge oder ähnlichem leicht herausfinden - ist nicht viel.

    wenn man den StationNamen leer läßt wird die erste Station gelesen

    PHP-Code:
    ###[DEF]###
    [name        =Netatmo Basis Indoor/Outdoor (v1.6)    ]

    [e#1 TRIGGER            = Starten #init=1]
    [e#2 IMPORTANT        = CLIENT_ID ]
    [e#3 IMPORTANT        = CLIENT_SECRET ]
    [e#4 IMPORTANT        = USERNAME ]
    [e#5 IMPORTANT        = PASSWORD ]
    [e#6                = StationName ]
    [e#7                = LogLevel  #init=0]

    [a#1        =Name Station    ]
    [a#2        =Temperature    ]
    [a#3        =min temp    ]
    [a#4        =min time    ]
    [a#5        =max temp    ]
    [a#6        =max time    ]
    [a#7        =temp trend    ]
    [a#8        =Humidity    ]
    [a#9        =Pressure    ]
    [a#10        =Pressure trend    ]
    [a#11        =CO2    ]
    [a#12        =Noise    ]
    [a#13        =Location    ]
    [a#14        =Altitude    ]
    [a#15        =Longitude    ]
    [a#16        =Latitude    ]
    [a#17        =##Modul##    ]
    [a#18        =Name Modul    ]
    [a#19        =Temperature    ]
    [a#20        =min temp    ]
    [a#21        =min time    ]
    [a#22        =max temp    ]
    [a#23        =max time    ]
    [a#24        =temp trend    ]
    [a#25        =Humidity    ]
    [a#26        =Battery    ]
    [a#27        =WiFi    ]
    [a#28        =Join    ]
    [a#29        =Debug    ]

    [v#1        = 0    ]


    [v#100    = 1.6 ]
    [v#101    = 19000290 ]
    [v#102    = Netatmo Basis Indoor/Outdoor ]
    [v#103    = 0 ]

    ###[/DEF]###


    ###[HELP]###
    <h2>NETATMO Basis Baustein für Station Indoor und Modul Outdoor</h2>

    ++++++++++++++++++++++++++++++++++++++++++++++
    ++    !!!!ACHTUNG!!! Ab Version 1.5 neue Classen und Pfade.     ++
    ++++++++++++++++++++++++++++++++++++++++++++++

    Diese Dateien mussen im Ordner /usr/local/edomi/main/include/php liegen.
    -> Ordner /Netatmo-API-PHP/...


    <h2>Ein- und Ausgänge</h2>
    <h3>Eingäne</h3>
    Der NETATMO Baustein wird automatisch gestartet, sobald EDOMI gestartet wird (E1 hat den Initialwert 1).
    E1: Signal 1 = Startet Baustein (Dämon)
    E2: CLIENT ID
    E3: CLIENT SECRET
    E4: Username
    E5: Passwort
    E6: Station Name (wenn nur eine Station im Netatmo Account dann leer lassen)
    E7: LogLevel

    <h3>Ausgänge</h3>    
    A1: Name Station
    A2: Temperatur
    A3: min Temperatur
    A4: min Temperarur Uhrzeit
    A5: max Temperatur
    A6: max Temperarur Uhrzeit
    A7: Temperatur trend (stable / up / down)
    A8: Humidity
    A9: Pressure
    A10: Pressure trend (stable / up / down)
    A11: CO2
    A12: Noise
    A13: Location
    A14: Altitude
    A15: Longitude (Längengrad)
    A16: Latitude (Breitengrad)
    A17: ##Modul##    - ab hier beginnt die Ausgabe für das Aussenmodul
    A18: Name Modul
    A19: Temperatur
    A20: min Temperatur
    A21: min Temperarur Uhrzeit
    A22: max Temperatur
    A23: max Temperarur Uhrzeit
    A24: Temperatur trend (stable / up / down)
    A25: Humidity
    A26: Battery (full, high, medium, low, very low)
    A27: WiFi
    A28: Join (Listenausgabe von A1 - A27 durch | getrennt. KO EIngabe im Visuelement durch {split(0)}, {split(1)} usw..)
    A29: Debug Ausgang

    V1: Dämon


    <h3>Changelog:</h3>
    ==========
    v1.0: Initial version
    v1.1: Anpassungen
    v1.2: Eingang für Namen entfernt. Die Module werden automatisch erkannt.    
    v1.5: LBS Code überabrbeitet. Neue Classen und Pfade
    v1.6: A28 als Join/Liste eingefügt. A29 als Debug (vorher A28) verschoben.


    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=logic_getInputs($id)) {

            if ($E[1]['value']!=0 && $E[1]['refresh']==1) {

                if (logic_getVar($id,1)==0) {    
                    logic_setVar($id,1,1);
                    logic_callExec(LBSID,$id);
                }

            }

        }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    require_once (dirname(__FILE__).'/../../../../main/include/php/Netatmo-API-PHP/src/Netatmo/autoload.php');

    set_time_limit(0);
    sql_connect();




    function LB_LBSID_Debug($id,$message,$LBS_loglevel,$USER_loglevel, $exit = FALSE) {
        setlocale(LC_TIME, "de_DE");
        $E=logic_getInputs($id);
        $version = logic_getVar($id,100);
        $logName = logic_getVar($id,102);
        $a = array("LOG_EMERG","LOG_ALERT","LOG_CRIT","LOG_ERR","LOG_WARNING","LOG_NOTICE","LOG_INFO","LOG_DEBUG");
        $LBS_loglevel<=$USER_loglevel && writeToCustomLog("LBSLBSID" . " - \t[$logName]",$LBS_loglevel,"(ID$id) - " . " " .$a[$LBS_loglevel].": ".$message."\t[v$version]");
        if($LBS_loglevel<=6){
        logic_setOutput($id,29,strftime("%A. %X %Z - %d. %B %Y. - ").$message);  
        }
        if($exit) {
            writeToCustomLog("LBSLBSID" . " - \t[$logName]",$LBS_loglevel,"(ID$id) ".$a[$LBS_loglevel].": LBS wird beendet."."\t[v$version]");
    //        LB_LBSID_Finish($id);
        }
    }







    if ($E=logic_getInputs($id)) {

            $user_log_level = $E[7]['value'];



    $client_id = $E[2]['value'];
    $client_secret = $E[3]['value'];
    $test_username = $E[4]['value'];
    $test_password = $E[5]['value'];
    $station_name = $E[6]['value'];

    LB_LBSID_Debug($id, "Netatmo Basis Indoor/Outdoor EXEC -> gestartet \n",6, $user_log_level, FALSE);
    }

    if (empty($client_id))    {
            LB_LBSID_Debug($id, "Fehler beim Initialisieren - keine Client ID an E[2] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($client_secret))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren - kein Client Secret an E[3] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($test_username))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren - kein Username an E[4] vorhanden. \n",3, $user_log_level, TRUE);
        }
    if (empty($test_password))    {
        LB_LBSID_Debug($id, "Fehler beim Initialisieren - kein Passwort an E[5] vorhanden. \n",3, $user_log_level, TRUE);
        }    

    while(getSysInfo(1)>=1) {

    $scope = Netatmo\Common\NAScopes::SCOPE_READ_STATION;
    $config = array("client_id" => $client_id,
                    "client_secret" => $client_secret,
                    "username" => $test_username,
                    "password" => $test_password);

    $client = new Netatmo\Clients\NAWSApiClient($config);


        try
        {
                $tokens = $client->getAccessToken();
        }
        catch(Netatmo\Exceptions\NAClientException $ex)
        {
            LB_LBSID_Debug($id, "Fehler beim Aufrufen des Tokens: " .$ex->getMessage()."\n",3, $user_log_level, FALSE);
        }


        try {

            $data = $client->getData(NULL, TRUE);
        }
        catch(Netatmo\Exceptions\NAClientException $ex) {
            LB_LBSID_Debug($id, "Fehler beim holen der Daten: ". $ex->getMessage()."\n",3, $user_log_level, FALSE);      
        }



        foreach($data['devices'] as $device)
        {

            try
           {

            if (  isset( $device['type'] ) && $device['type'] == 'NAMain' && isset( $device['station_name'] ) && ($device['station_name'] == $station_name || $station_name=='') )
            {
                $l=array($id);
                if (isset($device['station_name']))     {logic_setOutput($id,1,$l[]=$device['station_name']);}
                if (isset($device['dashboard_data']["Temperature"]))     {logic_setOutput($id,2,$l[]=$device['dashboard_data']["Temperature"]);}
                if (isset($device['dashboard_data']["min_temp"]))     {logic_setOutput($id,3,$l[]=$device['dashboard_data']["min_temp"]);}
                if (isset($device['dashboard_data']['date_min_temp']))     {
                    $date_min_innen = $device['dashboard_data']['date_min_temp'];
                    $date_min_innen =  date('H:i', $date_min_innen);
                    logic_setOutput($id,4,$l[]=$date_min_innen);
                    }
                if (isset($device['dashboard_data']["max_temp"]))     {logic_setOutput($id,5,$l[]=$device['dashboard_data']["max_temp"]);}    
                if (isset($device['dashboard_data']['date_max_temp']))     {
                    $date_max_innen = $device['dashboard_data']['date_max_temp'];
                    $date_max_innen =  date('H:i', $date_max_innen);
                    logic_setOutput($id,6,$l[]=@$date_max_innen);
                }
                if (isset($device['dashboard_data']["temp_trend"]))     {logic_setOutput($id,7,$l[]=$device['dashboard_data']["temp_trend"]);}    
                if (isset($device['dashboard_data']["Humidity"]))     {logic_setOutput($id,8,$l[]=$device['dashboard_data']["Humidity"]);}    
                if (isset($device['dashboard_data']["Pressure"]))     {logic_setOutput($id,9,$l[]=$device['dashboard_data']["Pressure"]);}    
                if (isset($device['dashboard_data']["pressure_trend"]))     {logic_setOutput($id,10,$l[]=$device['dashboard_data']["pressure_trend"]);}    
                if (isset($device['dashboard_data']["CO2"]))     {logic_setOutput($id,11,$l[]=$device['dashboard_data']["CO2"]);}        
                if (isset($device['dashboard_data']["Noise"]))     {logic_setOutput($id,12,$l[]=$device['dashboard_data']["Noise"]);}    
                if (isset($device['place']['city']))     {logic_setOutput($id,13,$l[]=$device['place']['city']);}    
                if (isset($device['place']['altitude']))     {logic_setOutput($id,14,$l[]=$device['place']['altitude']);}    
                if (isset($device['place']['location']['0']))     {logic_setOutput($id,15,$l[]=$device['place']['location']['0']);}    
                if (isset($device['place']['location']['1']))     {logic_setOutput($id,16,$l[]=$device['place']['location']['1']);}    
    //            logic_setOutput($id,28,join("|",$l));
                }
                }
                catch(Netatmo\Exceptions\NAClientException $ex)
                       {
                        LB_LBSID_Debug($id, "Fehler beim Ermitteln der Tageswerte beim MainDevice (NAMain): " . $ex->getMessage() . "\n",3, $user_log_level, FALSE);
                        }





        foreach($device['modules'] as $module){

            try
           {
            $l[]="Beginn Modul 1";
            if (  isset( $module['type'] ) && $module['type'] == 'NAModule1' ) {

                if (isset($module['module_name']))     {logic_setOutput($id,18,$l[]=$module['module_name']);}    
                if (isset($module['dashboard_data']["Temperature"]))     {logic_setOutput($id,19,$l[]=$module['dashboard_data']["Temperature"]);}    
                if (isset($module['dashboard_data']["min_temp"]))     {logic_setOutput($id,20,$l[]=$module['dashboard_data']["min_temp"]);}    
                if (isset($module['dashboard_data']['date_max_temp']))     {
                    $date_min_out = $module['dashboard_data']['date_min_temp'];
                    $date_min_out =  date('H:i', $date_min_out);
                    logic_setOutput($id,21,$l[]=$date_min_out);
                }
                if (isset($module['dashboard_data']["max_temp"]))     {logic_setOutput($id,22,$l[]=$module['dashboard_data']["max_temp"]);}    
                if (isset($module['dashboard_data']['date_max_temp']))     {
                    $date_max_out = $module['dashboard_data']['date_max_temp'];
                    $date_max_out =  date('H:i', $date_max_out);
                    logic_setOutput($id,23,$l[]=$date_max_out);
                }
                if (isset($module['dashboard_data']["temp_trend"]))     {logic_setOutput($id,24,$l[]=$module['dashboard_data']["temp_trend"]);}    
                if (isset($module['dashboard_data']["Humidity"]))     {logic_setOutput($id,25,$l[]=$module['dashboard_data']["Humidity"]);}

                        if (isset($module['battery_vp'])){
                            $b=$module['battery_vp'];    
                            switch ($b)
                            {
                                case ($b >= 5500):
                                $c= 'full';
                                break;
                                case ($b>= 5000):
                                $c= 'high';
                                break;
                                case ($b>= 4500):
                                $c= 'medium';
                                break;
                                case ($b>= 4000):
                                $c= 'low';
                                break;
                                case ($b< 4000):
                                $c= 'very low';
                                break;
                                default:
                                $c= 'Error';
                            }
                        }
                logic_setOutput($id,26,$l[]=$c);
                if (isset($module['rf_status']))      {logic_setOutput($id,27,$l[]=$module['rf_status']);}
                logic_setOutput($id,28,join("|",$l));
                }
                }
                catch(Netatmo\Exceptions\NAClientException $ex)
                       {
                        LB_LBSID_Debug($id, "Fehler beim holen der Daten: ". $ex->getMessage()."\n",3, $user_log_level, FALSE);
                        }

        }

    }

        usleep(1000000*300);
    }


    sql_disconnect();

    function LB_LBSID_Finish($id) {
        setlocale(LC_TIME, "de_DE");
        logic_setOutput($id,29,strftime("%A. %X %Z - %d. %B %Y. - "));
        LB_LBSID_Debug($id, "Netatmo Module Wind/Regen EXEC -> wurde beendet \n",6, $user_log_level, FALSE);
        logic_setVar($id,1,0);
        sql_disconnect();
        exit();
    }
    ?>
    ###[/EXEC]###
    Zuletzt geändert von Dosim; 17.06.2018, 08:43.

    Einen Kommentar schreiben:

  • tunneltruppe
    KNX Anwender

  • tunneltruppe
    antwortet
    Zitat von Dosim Beitrag anzeigen
    Hallo,
    war bei mir auch so - ich habe den LBS angepasst und um einen Station Namen erweitert .
    Damit funktioniert es dann .

    Kann den geänderten LBS hier mal posten , vielleicht kann er dann auch als neue Version in den Download Bereich.

    VG
    Dominik
    ...ahhh Danke für die Info!!
    Ja wäre schön wenn Du den LBS einstellst oder die Änderungen in den orginalen LBS einfließen
    könnte.
    Gruß Marcus

    Einen Kommentar schreiben:


  • Dosim
    antwortet
    Hallo,
    war bei mir auch so - ich habe den LBS angepasst und um einen Station Namen erweitert .
    Damit funktioniert es dann .

    Kann den geänderten LBS hier mal posten , vielleicht kann er dann auch als neue Version in den Download Bereich.

    VG
    Dominik

    Einen Kommentar schreiben:

  • tunneltruppe
    KNX Anwender

  • tunneltruppe
    antwortet
    Hallo in die Runde,
    ich hab mal eine Frage:
    Hat einer mehr als ein Netatmosystem im Einsatz?
    Ich hab das Problem, dass ich zwei habe (auch zwei unterschiedliche CLIENT_ID und CLIENT_SECRET) und
    die erste angemeldete Station bekommt die Werte (nur das Basismobul und nicht die Innenmodule)
    vom zweiten Netatmosystem.
    Was kann ich wohl falsch machen?
    DANKE in die Runde!!!
    Gruß Marcus

    Einen Kommentar schreiben:


  • MoseP
    antwortet
    Hallo allerseits,
    ich habe vor ein paar Tagen die beiden Netatmo-LBS 19000290 und 19000299 auf meinem Edomi installiert. Leider läuft bei mir nur einer korrekt, nämlich der 19000299 für das Zusatzmodul. Hier werden die Werte korrekt ausgelesen und angezeigt. Der 19000290 (mit den gleichen Einstellungen für CLIENT_ID etc.) gibt einfach nichts aus, in der Live-Ansicht bleiben alle Werte leer (19000299 zeigt korrekt an).

    Im Fehler-Log finde ich genau alle fünf Minuten diese zwei Fehler:
    Code:
    Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000290.php | Fehlercode: 8 | Zeile: 91 | Undefined variable: data
    Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000290.php | Fehlercode: 2 | Zeile: 91 | Invalid argument supplied for foreach()
    Was hat es mit diesen beiden Fehlern auf sich? Und was kann ich dagegen tun?

    Danke für Eure Hilfe,
    André

    Einen Kommentar schreiben:

  • Joker1982
    Forums-Einsteiger

  • Joker1982
    antwortet
    Hallo, ich überlege gerade Rauchmelder und IP-Kameras anzuschaffen... Hattet Ihr Erfolg mit der Integration von Netatmo? Ich bin ein wenig von der Werbung bzgl. NEST und/oder Arlo angesprochen worden... aber auch hier finde ich nicht so viel bzgl. Integration in EDOMI. Es ginge mir auch nur darum Status in der Visu zu sehen - muss jetzt nicht der Livestream sein.

    Einen Kommentar schreiben:

  • WagoKlemme
    Forums-Einsteiger

  • WagoKlemme
    antwortet
    Nein, ich oute mich als Kabelfan.
    Aber Du kannst doch ein eigenes WLAN nur für Edomi-"Geräte" machen und nachts abschalten. Nachts schaut niemand auf die Visu, nur beim Rauchmelder gings nicht.

    Einen Kommentar schreiben:


  • Stoxn
    antwortet
    WagoKlemme
    Forums-Einsteiger
    WagoKlemme Aber nutzt Du auch Geräte von Netamo (darum geht es ja in diesem Thread)? Diese machen nur mit dauerhafter WLAN Verbindung Sinn soweit ich das sehe...

    Einen Kommentar schreiben:

  • WagoKlemme
    Forums-Einsteiger

  • WagoKlemme
    antwortet
    Zitat von Stoxn Beitrag anzeigen
    Schaltet Ihr Eure WLANs nicht ab? Auch nicht nachts?
    Doch ich.
    Und nicht nur das, Edomi läuft offline in einem eigenen Netz.

    Einen Kommentar schreiben:

Lädt...
X