Netatmo Wetterstation (incl. CO2 Messung) einbinden

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Indigo
Beiträge: 356
Registriert: 10.02.2015, 20:32
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Indigo » 06.02.2018, 20:40

Der Inhalt der tcl Datei ist noch wichtig. Gerne ohne Benutzernamen und Passwort als Code hier posten.

digitalnaive
Beiträge: 14
Registriert: 27.09.2017, 16:25
Hat sich bedankt: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von digitalnaive » 06.02.2018, 22:34

Ich habe PW, E-Mail und die 2 Device ID´s mit X ersetzt. Der Rest ist unberührt und meine TCL

Code: Alles auswählen

    #!/bin/tclsh

    load tclrega.so

    #---------------------------------------------------------------------------------------------------------------#
    #                                                   CONFIG                                                      #
    #---------------------------------------------------------------------------------------------------------------#
    #  to obtain your own client ID and API key please register a new app here: http://dev.netatmo.com/dev/listapps
    set clientId "x"                     
    set clientSecret "x"
    #  the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
    set username "x"
    set password "x"
    #  the following are MAC addresses of your indoor station and the outside module and rain module
    set deviceid "x"
    set moduleid "x"
    set rainid "XX:XX:XX:XX:XX:XX"
    set windid "XX:XX:XX:XX:XX:XX"

    set ::env(LD_LIBRARY_PATH) "/usr/local/addons/cuxd"
    set cfgfile "/tmp/netatmo.dat"
    set logtag "netatmo.tcl"
    set logfacility "local1"
    # 0=panic, 1=alert 2=crit 3=err 4=warn 5=notice 6=info 7=debug
    set loglevel 6
    #---------------------------------------------------------------------------------------------------------------#

    #---------------------------------------------------------------------------------------------------------------#
    #                                              GLOBAL VARIABLES                                                                #
    #---------------------------------------------------------------------------------------------------------------#
    set accesstoken ""
    set refreshtoken ""
    set tokenexpires 0
    #---------------------------------------------------------------------------------------------------------------#


    set loglevels {panic alert crit err warn notice info debug}

    proc log {lvl msg} {
        global logtag
        global logfacility
        global loglevel
        global loglevels
       
        set lvlnum [lsearch $loglevels $lvl]
       
        if {$lvlnum <= $loglevel} {
            if {$lvlnum <= 3} {
                catch {exec logger -s -t $logtag -p $logfacility.$lvl $msg}
            } else {
                puts "$lvl: $msg"
                catch {exec logger -t $logtag -p $logfacility.$lvl $msg}
            }
           
        }
       
    }

    proc refreshToken {rt ci cs} {
        log debug "refreshing token"
        set url "https://api.netatmo.net/oauth2/token"
        set header "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
        set parameter "grant_type=refresh_token&refresh_token=$rt&client_id=$ci&client_secret=$cs"

        catch {exec /usr/local/addons/cuxd/curl -k -i -H $header -X POST -d $parameter $url} response
        log debug "response was $response"
       
        return $response

    }

    proc requestToken {ci cs un pw} {
        log "debug" "requesting new token"
        set url "https://api.netatmo.net/oauth2/token"
        set header "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
        set parameter "grant_type=password&client_id=$ci&client_secret=$cs&username=$un&password=$pw"

        catch {exec /usr/local/addons/cuxd/curl -k -i -H $header -X POST -d $parameter $url} response
        log debug "response was $response"
       
        return $response

    }

    proc parseOAuthResponse {input} {
        log debug "parsing authentication result"
        global accesstoken
        global refreshtoken
       
        regexp {HTTP/1.1\s(\d*)} $input dummy returncode
        regexp {\"access_token\":\"(.*?)\"} $input dummy accesstoken
        regexp {\"refresh_token\":\"(.*?)\"} $input dummy refreshtoken
        regexp {\"expires_in\":(.*?)\,} $input dummy expiresin

        log debug "returncode is $returncode"
        log debug "access token is $accesstoken"
        log debug "refresh token is $refreshtoken"
        log debug "expires in $expiresin"
       
        if {[expr $returncode]!=200} {
                log error "Authentication failed with code $returncode and response $input"
                exit 1
            }
       
        return $expiresin
    }

    proc saveAccessToken {expin} {
        global accesstoken
        global refreshtoken
        global tokenexpires
        global cfgfile
           
        log debug "saving new access token to $cfgfile"
       
        set fileId [open $cfgfile "w"]
       
        set now [clock seconds]
        set tokenexpires [expr $now + $expin]
       
        puts $fileId $accesstoken
        puts $fileId $refreshtoken
        puts $fileId $tokenexpires
        close $fileId
    }

    proc loadAccessToken {} {
        global accesstoken
        global refreshtoken
        global tokenexpires
        global cfgfile
       
        log debug "loading stored credentials from $cfgfile"
       
        set fp [open $cfgfile r]
        set file_data [read $fp]
        close $fp
       
        log debug "file data is: $file_data"
       
        set data [split $file_data "\n"]   
       
        set accesstoken [lindex $data 0]
        set refreshtoken [lindex $data 1]
        set tokenexpires [lindex $data 2]
    }

    log debug "script has started"

    if { [file exists $cfgfile] == 1} {
        log info "found stored credentials"
            loadAccessToken
            set now [clock seconds]
            log debug "current time is [clock format $now -format "%Y-%m-%dT%H:%M:%S"], token is valid until [clock format $tokenexpires -format "%Y-%m-%dT%H:%M:%S"]"
            if {[expr $now >= $tokenexpires] == 1} {
                log notice "token has already expired"
                saveAccessToken [parseOAuthResponse [refreshToken $refreshtoken $clientId $clientSecret]]
                log notice "oauth token successfully refreshed"
            } else {
                log info "token is still valid"
            }
        } else {
            log warn "no stored credentials found"
            saveAccessToken [parseOAuthResponse [requestToken $clientId $clientSecret $username $password]]
            log notice "oauth token successfully initialized"
        }

    log debug "polling outdoor module..."
    set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$moduleid&scale=max&type=Temperature,Humidity&date_end=last"
    log debug "querying $url"
    catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
    log debug "response is: $response"

    regexp {\"value\":\[\[(.*?),(.*?)\]} $response dummy otemp ohum

    log info "Outside temperature is $otemp"
    log info "Outside humidity is $ohum"

    log debug "polling main module..."
    set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&scale=max&type=Temperature,Humidity,CO2,Pressure,Noise&date_end=last"
    log debug "querying $url"
    catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
    log debug "response is: $response"

    regexp {\"value\":\[\[(.*?),(.*?),(.*?),(.*?),(.*?)\]} $response dummy itemp ihum ico2 ipressure inoise
    
    log info "LogI is $response"              
    log info "Inside temperature is $itemp"
    log info "Inside humidity is $ihum"
    log info "Inside CO2 level $ico2"
    log info "Inside pressure is $ipressure"
    log info "Inside noise level is $inoise"

    log debug "polling regensensor module...1d"
    set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$rainid&scale=1day&type=sum_rain&date_end=last"
    log debug "querying $url"
    catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
    log debug "response is: $response"

    regexp {\"value\":\[\[(.*?)\]} $response dummy rain1d
    
    log info "LogR is $response"                
    log info "Outside Regen1d is $rain1d"

    log debug "polling regensensor module...30min"
    set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$rainid&scale=30min&type=Rain,sum_rain&date_end=last"
    log debug "querying $url"
    catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
    log debug "response is: $response"

    regexp {\"value\":\[\[(.*?),(.*?)\]} $response dummy rain2 rain30min
    
    log info "LogR is $response"                
    log info "Outside rain2 is $rain2"
    log info "Outside Regen30min is $rain30min"

    log debug "polling wind module..."
    set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$windid&scale=max&type=WindAngle,WindStrength,GustAngle,GustStrength&date_end=last"
   log debug "quering $url"
   catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
   log debug "respnose is $response"

   regexp {\"value\":\[\[(.*?),(.*?),(.*?),(.*?)\]} $response dummy windangle windstrength gustangle guststrength
   log info "WindAngle is $windangle"
   log info "Windstrength is $windstrength"
   log info "GustAngle is $gustangle"
   log info "Guststrength is $guststrength"


    #
    # set ReGaHss variables
    #
    set rega_cmd ""
    append rega_cmd "var ITemp = dom.GetObject('CUxD.CUX9002001:1.SET_TEMPERATURE');"
    append rega_cmd "var IHumi = dom.GetObject('CUxD.CUX9002001:1.SET_HUMIDITY');"
    append rega_cmd "var OTemp = dom.GetObject('CUxD.CUX9002002:1.SET_TEMPERATURE');"
    append rega_cmd "var OHumi = dom.GetObject('CUxD.CUX9002002:1.SET_HUMIDITY');"
    append rega_cmd "var Rain1 = dom.GetObject('Regenmenge_30min');"
    append rega_cmd "var Rain2 = dom.GetObject('Regenmenge_1d');"
    append rega_cmd "var Rain3 = dom.GetObject('Regen_aktuell');"
    append rega_cmd "var IPress = dom.GetObject('Luftdruck');"
    append rega_cmd "var ICO2 = dom.GetObject('CO2');"
    append rega_cmd "var INoise = dom.GetObject('Sonometer');"
    append rega_cmd "var windA = dom.GetObject('Windrichtung');"
    append rega_cmd "var windS = dom.GetObject('Windstaerke');"
    append rega_cmd "var gustA = dom.GetObject('Gustangle');"
    append rega_cmd "var gustS = dom.GetObject('Guststaerke');"
    append rega_cmd "OTemp.State('$otemp');"
    append rega_cmd "OHumi.State('$ohum');"
    append rega_cmd "ITemp.State('$itemp');"
    append rega_cmd "IHumi.State('$ihum');"
    append rega_cmd "IPress.State('$ipressure');"
    append rega_cmd "ICO2.State('$ico2');"
    append rega_cmd "INoise.State('$inoise');"
    append rega_cmd "Rain1.State('$rain30min');"
    append rega_cmd "Rain2.State('$rain1d');"
    append rega_cmd "Rain3.State('$rain2');"
    append rega_cmd "windA.State('$windangle');"
    append rega_cmd "windS.State('$windstrength');"
    append rega_cmd "gustA.State('$gustangle');"
    append rega_cmd "gustS.State('$guststrength');"
    append rega_cmd "var sdatetime = system.Date('%d.%m.%Y %H:%M:%S');"
    append rega_cmd "var netatmosynctime = dom.GetObject('SyncTime');"
    append rega_cmd "netatmosynctime.Variable(sdatetime.ToString());"
    rega_script $rega_cmd

Indigo
Beiträge: 356
Registriert: 10.02.2015, 20:32
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Indigo » 07.02.2018, 15:26

Hi,
Wenn du keinen Regen- und Windmesser hast musst du alles was sich auf die beiden Geräte bezieht aus deiner tcl löschen.
Außerdem müssen die Variablen im Skript am Ende identisch zur Bezeichnung in der CCU sein. Also entweder zweimal CO2 oder zweimal CO2 Zahl.
Bin grad beim Boarden. Am WE kann ich es nochmal genauer anschauen.

digitalnaive
Beiträge: 14
Registriert: 27.09.2017, 16:25
Hat sich bedankt: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von digitalnaive » 07.02.2018, 15:49

Soweit komme ich mit meinem Laienhaften Verständnis mit.

Mein Problem ist, warum spuckt er mir direkt für Line 1 einen Fehler aus?

invalid command name " "
while executing
"    #!/bin/tclsh"
(file "/usr/local/addons/netatmo/netatmo.tcl" line 1)

Das hat ja nichts mit den Überschüssigen Werten oder den Variablen am Ende zu tun, oder?

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Bulli » 07.02.2018, 16:17

Hallo
in der erst Zeile darf kein(e) Leerzeichen drin sein, sonst mußt du "tclsh /usr/local/addons/netatmo/netatmo.tcl" als Befehl schreiben. Mach die Leerzeichen raus dann kannst du dir tclsh sparen.

Hier die Erklärung für die erste Zeile.
viewtopic.php?f=31&t=12876&p=299492&hil ... ng#p299492

Schau mal ob das schon reicht wenn nicht schick mir dein Script und ich schau es mir mal an. Und natürlich nicht vergessen
set username "x"
set password "x"

Gruß
Bulli

digitalnaive
Beiträge: 14
Registriert: 27.09.2017, 16:25
Hat sich bedankt: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von digitalnaive » 12.02.2018, 21:43

can't read "otemp": no such variable
while executing
"append rega_cmd "OTemp.State('$otemp');""
(file "/usr/local/addons/netatmo/netatmo.tcl" line 187)
#

Das bekomme ich jetzt, obwohl ich das hier hinzugefügt hatte:

Code: Alles auswählen

set rega_cmd ""
    append rega_cmd "var ITemp = dom.GetObject('CUxD.CUX9002001:1.SET_TEMPERATURE');"
    append rega_cmd "var IHumi = dom.GetObject('CUxD.CUX9002001:1.SET_HUMIDITY');"
    append rega_cmd "var OTemp = dom.GetObject('CUxD.CUX9002002:1.SET_TEMPERATURE');"
    append rega_cmd "var OHumi = dom.GetObject('CUxD.CUX9002002:1.SET_HUMIDITY');"
    append rega_cmd "var IPress = dom.GetObject('Luftdruck');"
    append rega_cmd "var ICO2 = dom.GetObject('CO2');"
    append rega_cmd "var INoise = dom.GetObject('Sonometer');"
    append rega_cmd "OTemp.State('$otemp');"
    append rega_cmd "OHumi.State('$ohum');"
    append rega_cmd "ITemp.State('$itemp');"
    append rega_cmd "IHumi.State('$ihum');"
    append rega_cmd "IPress.State('$ipressure');"
    append rega_cmd "ICO2.State('$ico2');"
    append rega_cmd "INoise.State('$inoise');"
    append rega_cmd "var sdatetime = system.Date('%d.%m.%Y %H:%M:%S');"
    append rega_cmd "var netatmosynctime = dom.GetObject('SyncTime');"
    append rega_cmd "netatmosynctime.Variable(sdatetime.ToString());"
    rega_script $rega_cmd

Indigo
Beiträge: 356
Registriert: 10.02.2015, 20:32
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Indigo » 14.02.2018, 11:42

Hallo,

der Teil sieht eigentlich gut aus.
Bekommt du alle Werte ausgegeben wenn du das Skript im Terminal testweise startest?
Könnte ansonsten an einer falschen MAC Adresse des Aussenmoduls liegen.

mick_we
Beiträge: 22
Registriert: 14.02.2018, 15:29

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von mick_we » 14.02.2018, 18:25

Hallo,

vielen lieben Dank für diese tolle Anleitungen und Hilfe. Ich habe es tatsächlich geschafft NEtatmo mit einigen Zusatzmodulen problemlos in meine Homematic Umgebung einzubinden. EIne Frage habe ich aber dennoch. Gibt es irgendwie die Möglichkeit die Luftfeuchtigkeit auszulesen und anzeigen zu lassen? Das wäre ja noch ein Traum.

Ich danke euch schon mal im voraus.

Indigo
Beiträge: 356
Registriert: 10.02.2015, 20:32
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Indigo » 15.02.2018, 10:43

Hi,

die Luftfeuchte wird doch standartmässig mit ausgelesen und in Homemmatic dargestellt.
Sogar zusätzlich zu zur prozentualen auch die absolute Feuchte.

Bei dir nicht? Ganz selten hängt das CuXd Gerät.
In dem Fall bitte einmal in den Einstellungen des CuXD Gefätes von Temp+Hum auf Temp umstellen. Mit OK bestätigen. Wieder in die Einstellungen gehen und wieder auf Temp+Hum stellen. Und wieder OK. Dann sollte es dargestellt werden.

mick_we
Beiträge: 22
Registriert: 14.02.2018, 15:29

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von mick_we » 15.02.2018, 22:36

Leider nein, hat nicht funktioniert. Ich habe mal Screenshots angehangen und mein Script, vielleicht hat da ja jemand ne Idee, was es sein könnte. Würde mich jedenfalls sehr freuen.

Code: Alles auswählen

                #!/bin/tclsh

                load tclrega.so

                #---------------------------------------------------------------------------------------------------------------#
                #                                                   CONFIG                                                      #
                #---------------------------------------------------------------------------------------------------------------#
                #  to obtain your own client ID and API key please register a new app here: http://dev.netatmo.com/dev/listapps
                set clientId MEINE ID
                set clientSecret MEINSECRET
                #  the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
                set username mein Username
                set password mein Passwort
    #           the following are MAC addresses of your indoor station and the outside module and rain module
                set deviceid xyz
		set szid1 xyz1
               	set szid2 xyz2

                set ::env(LD_LIBRARY_PATH) "/usr/local/addons/cuxd"
                set cfgfile "/tmp/netatmo.dat"
                set logtag "netatmo.tcl"
                set logfacility "local1"
                # 0=panic, 1=alert 2=crit 3=err 4=warn 5=notice 6=info 7=debug
                set loglevel 7
                #---------------------------------------------------------------------------------------------------------------#

                #---------------------------------------------------------------------------------------------------------------#
                #                                              GLOBAL VARIABLES                                                                #
                #---------------------------------------------------------------------------------------------------------------#
                set accesstoken ""
                set refreshtoken ""
                set tokenexpires 0
                #---------------------------------------------------------------------------------------------------------------#


               
        set loglevels {panic alert crit err warn notice info debug}

        proc log {lvl msg} {
            global logtag
            global logfacility
            global loglevel
            global loglevels
           
            set lvlnum [lsearch $loglevels $lvl]
           
            if {$lvlnum <= $loglevel} {
                if {$lvlnum <= 3} {
                    catch {exec logger -s -t $logtag -p $logfacility.$lvl $msg}
                } else {
                    puts "$lvl: $msg"
                    catch {exec logger -t $logtag -p $logfacility.$lvl $msg}
                }
               
            }
           
        }

        proc refreshToken {rt ci cs} {
            log debug "refreshing token"
            set url "https://api.netatmo.net/oauth2/token"
            set header "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
            set parameter "grant_type=refresh_token&refresh_token=$rt&client_id=$ci&client_secret=$cs"

            catch {exec /usr/local/addons/cuxd/curl -k -i -H $header -X POST -d $parameter $url} response
            log debug "response was $response"
           
            return $response

        }

        proc requestToken {ci cs un pw} {
            log "debug" "requesting new token"
            set url "https://api.netatmo.net/oauth2/token"
            set header "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
            set parameter "grant_type=password&client_id=$ci&client_secret=$cs&username=$un&password=$pw"

            catch {exec /usr/local/addons/cuxd/curl -k -i -H $header -X POST -d $parameter $url} response
            log debug "response was $response"
           
            return $response

        }

        proc parseOAuthResponse {input} {
            log debug "parsing authentication result"
            global accesstoken
            global refreshtoken
           
            regexp {HTTP/1.1\s(\d*)} $input dummy returncode
            regexp {\"access_token\":\"(.*?)\"} $input dummy accesstoken
            regexp {\"refresh_token\":\"(.*?)\"} $input dummy refreshtoken
            regexp {\"expires_in\":(.*?)\,} $input dummy expiresin

            log debug "returncode is $returncode"
            log debug "access token is $accesstoken"
            log debug "refresh token is $refreshtoken"
            log debug "expires in $expiresin"
           
            if {[expr $returncode]!=200} {
                    log error "Authentication failed with code $returncode and response $input"
                    exit 1
                }
           
            return $expiresin
        }

        proc saveAccessToken {expin} {
            global accesstoken
            global refreshtoken
            global tokenexpires
            global cfgfile
               
            log debug "saving new access token to $cfgfile"
           
            set fileId [open $cfgfile "w"]
           
            set now [clock seconds]
            set tokenexpires [expr $now + $expin]
           
            puts $fileId $accesstoken
            puts $fileId $refreshtoken
            puts $fileId $tokenexpires
            close $fileId
        }

        proc loadAccessToken {} {
            global accesstoken
            global refreshtoken
            global tokenexpires
            global cfgfile
           
            log debug "loading stored credentials from $cfgfile"
           
            set fp [open $cfgfile r]
            set file_data [read $fp]
            close $fp
           
            log debug "file data is: $file_data"
           
            set data [split $file_data "\n"]   
           
            set accesstoken [lindex $data 0]
            set refreshtoken [lindex $data 1]
            set tokenexpires [lindex $data 2]
        }

        log debug "script has started"

        if { [file exists $cfgfile] == 1} {
            log info "found stored credentials"
                loadAccessToken
                set now [clock seconds]
                log debug "current time is [clock format $now -format "%Y-%m-%dT%H:%M:%S"], token is valid until [clock format $tokenexpires -format "%Y-%m-%dT%H:%M:%S"]"
                if {[expr $now >= $tokenexpires] == 1} {
                    log notice "token has already expired"
                    saveAccessToken [parseOAuthResponse [refreshToken $refreshtoken $clientId $clientSecret]]
                    log notice "oauth token successfully refreshed"
                } else {
                    log info "token is still valid"
                }
            } else {
                log warn "no stored credentials found"
                saveAccessToken [parseOAuthResponse [requestToken $clientId $clientSecret $username $password]]
                log notice "oauth token successfully initialized"
            }

#        log debug "polling outdoor module..."
#        set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$moduleid&scale=max&type=Temperature,Humidity&date_end=last"
#        log debug "querying $url"
#        catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
#        log debug "response is: $response"

#        regexp {\"value\":\[\[(.*?),(.*?)\]} $response dummy otemp ohum

#        log info "Outside temperature is $otemp"
#        log info "Outside humidity is $ohum"

        log debug "polling main module..."
        set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&scale=max&type=Temperature,Humidity,CO2,Pressure,Noise&date_end=last"
        log debug "querying $url"
        catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
        log debug "response is: $response"

        regexp {\"value\":\[\[(.*?),(.*?),(.*?),(.*?),(.*?)\]} $response dummy itemp ihum ico2 ipressure inoise
       
        log info "LogI is $response"             
        log info "Inside temperature is $itemp"
        log info "Inside humidity is $ihum"
        log info "Inside CO2 level $ico2"
        log info "Inside pressure is $ipressure"
        log info "Inside noise level is $inoise"

        log debug "polling zusatzmodule..."
        set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$szid1&scale=max&type=Temperature,Humidity,CO2&date_end=last"
        log debug "querying $url"
        catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
        log debug "response is: $response"

        regexp {\"value\":\[\[(.*?),(.*?),(.*?)\]} $response dummy ztemp zhum zco2

        log info "LogI is $response"             
        log info "Inside temperature is $ztemp"
        log info "Inside humidity is $zhum"
        log info "Inside CO2 level $zco2"

        log debug "polling zusatzmodule..."
        set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$szid2&scale=max&type=Temperature,Humidity,CO2&date_end=last"
        log debug "querying $url"
        catch {exec /usr/local/addons/cuxd/curl -k -# $url} response
        log debug "response is: $response"

        regexp {\"value\":\[\[(.*?),(.*?),(.*?)\]} $response dummy ztemp2 zhum2 zco3

        log info "LogI is $response"             
        log info "Inside temperature is $ztemp2"
        log info "Inside humidity is $zhum2"
        log info "Inside CO2 level $zco3"

        #
        # set ReGaHss variables
        #
        set rega_cmd ""
        append rega_cmd "var ITemp = dom.GetObject('CUxD.CUX9002001:1.SET_TEMPERATURE');"
        append rega_cmd "var IHumi = dom.GetObject('CUxD.CUX9002001:1.SET_HUMIDITY');"
#        append rega_cmd "var OTemp = dom.GetObject('CUxD.CUX9002002:1.SET_TEMPERATURE');"
#        append rega_cmd "var OHumi = dom.GetObject('CUxD.CUX9002002:1.SET_HUMIDITY');"
        append rega_cmd "var IPress = dom.GetObject('Luftdruck');"
        append rega_cmd "var ICO2 = dom.GetObject('CO2');"
        append rega_cmd "var INoise = dom.GetObject('Sonometer');"
#        append rega_cmd "OTemp.State('$otemp');"
#        append rega_cmd "OHumi.State('$ohum');"
        append rega_cmd "ITemp.State('$itemp');"
        append rega_cmd "IHumi.State('$ihum');"
        append rega_cmd "IPress.State('$ipressure');"
        append rega_cmd "ICO2.State('$ico2');"
        append rega_cmd "INoise.State('$inoise');"
        append rega_cmd "var sdatetime = system.Date('%d.%m.%Y %H:%M:%S');"
        append rega_cmd "var netatmosynctime = dom.GetObject('SyncTime');"
        append rega_cmd "netatmosynctime.Variable(sdatetime.ToString());"
    append rega_cmd "var ZTemp = dom.GetObject('CUxD.CUX9002002:1.SET_TEMPERATURE');"
    append rega_cmd "var ZHumi = dom.GetObject('CUxD.CUX9002002:1.SET_HUMIDITY');"
    append rega_cmd "var ZCO2 = dom.GetObject('CO2_SZ');"
    append rega_cmd "ZTemp.State('$ztemp');"
    append rega_cmd "ZHumi.State('$zhum');"
    append rega_cmd "ZCO2.State('$zco2');"

    append rega_cmd "var ZTemp2 = dom.GetObject('CUxD.CUX9002003:1.SET_TEMPERATURE');"
    append rega_cmd "var ZHumi2 = dom.GetObject('CUxD.CUX9002003:1.SET_HUMIDITY');"
    append rega_cmd "var ZCO3 = dom.GetObject('CO2_ZS');"
    append rega_cmd "ZTemp2.State('$ztemp2');"
    append rega_cmd "ZHumi2.State('$zhum2');"
    append rega_cmd "ZCO3.State('$zco3');"

        rega_script $rega_cmd
Bild
Bild

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“