Netatmo Wetterstation (incl. CO2 Messung) einbinden

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

Moderator: Co-Administratoren

mafa
Beiträge: 64
Registriert: 23.04.2018, 19:27

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von mafa » 14.10.2018, 11:58

Danke, jetzt passts! API hab ich auch.

Blöde Frage: Gibt es auch eine Möglichkeit die öffentlichen Daten von einer Netatmos Wetterstation aus meiner Nachbarschaft in HM abzugreifen? Lt. https://weathermap.netatmo.com wären da ein paar in meiner Gegend.
Im WWW hab ich das dazu gefunden: https://dev.netatmo.com/en-US/resources ... publicdata.
Also die Daten kann man abgreifen, aber ohne ModulID krieg ich sie nicht in die Homematic oder?

herk
Beiträge: 2
Registriert: 17.09.2018, 17:50

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden - zu dumm dazu

Beitrag von herk » 16.10.2018, 22:59

Bulli hat geschrieben:
19.09.2018, 19:26
herk hat geschrieben:
17.09.2018, 17:57
Hallo zusammen,

komme einfach nicht mehr weiter :( :(
Ich dachte eigentlich, copy&paste wäre kein Problem und die Anleitung ist ja auch super geschrieben. Habe problemlos alle Variablen herausbekommen....aber: Nix passiert in der CCU3 und im Terminal bekomme ich folgendes Ergebnis vom script:

17:16:10 [ttyACM0] --> ? (api.netatmo.net is unknown) Use one of B b C F i A Z E G M K U Y R T V W X e f m l t u x

Was bedeutet das und wie behebe ich das???? Fragen über Fragen.
Kann jemand helfen?
Danke :-)
Hallo herk
die Fehlermeldung sagt mir erst mal gar nichts. Was komisch ist >>>17:16:10 [ttyACM0] <<< wo kommt das denn her?
Am besten auch mal das Script posten und was bis jetzt geht oder eben nicht. Zugangsdaten aus XXX nicht vergessen.

Gruß
Bulli
Komme erst jetzt dazu, mich ganz dolle zu bedanken. Das Löschen der überflüssigen Kommandozeilen war der Fehler. Das Auskommentieren nützt nichts.
Danke Bulli :)

ab_home
Beiträge: 84
Registriert: 02.06.2014, 09:44
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von ab_home » 02.11.2018, 14:31

Ich bin heute von meiner CCU2 auf eine CCU3 umgezogen, entsprechend dem dafür hier im Forum empfohlenen Ablauf.

Leider werden die Temperatur und Luftfeuchtigkeit nicht in die CCU-Netatmo-Geräte übertragen. Andere Werte, wie der CO2-Gehalt hingegen schon. Beim Netatmo-Aufruf sehe ich in der Ausgabe des tcl-Skripts, dass die Temperatur und die Luftfeuchtigkeit korrekt abgerufen werden. Das funktioniert also auch nach dem Transfer von der CCU2 auf die CCU3 noch.

Meine Vermutung ist, dass eine Einstellung an den CCU-Netatmo-Geräten noch nicht passt. Denn alle die Eigenschaften, die ich über eine separate Systemvariable fülle, werden ja korrekt übertragen. Nur die eigentlichen Werte Temperatur und Luftfeuchtigkeit des Geräts jeweils nicht.
Ich habe deshalb die entsprechenden Screenshots der Einstellungen angehängt. Falls noch Infos fehlen, reiche ich die natürlich zeitnah nach.
Dateianhänge
Bildschirmfoto 2018-11-02 um 14.14.55.png
Bildschirmfoto 2018-11-02 um 14.15.57.png
Bildschirmfoto 2018-11-02 um 14.16.15.png
Bildschirmfoto 2018-11-02 um 14.16.58.png

ab_home
Beiträge: 84
Registriert: 02.06.2014, 09:44
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von ab_home » 02.11.2018, 15:47

Ist gelöst. Wer lesen kann ist doch im Vorteil ...
Im How-to war nachzulesen, welche Einstellungen bei den CUxD-Geräten nicht passten.

satpower
Beiträge: 11
Registriert: 06.12.2018, 17:01

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von satpower » 08.12.2018, 12:40

Hallo,
das ganze funktioniert sehr gut.
Vielen Dank dafür!
Ich würde gerne mehrere Zusatz-Innenmodule einbinden.
Was muss ich genau ergänzen bzw. abändern?

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 » 08.12.2018, 15:10

Hallo
Howto bekannt? Das steht es drin, wenn dann noch Fragen offen sind einfach wieder hier Fragen.

viewtopic.php?f=31&t=28188&hilit=netatmo+howto#p277517



Gruß
Bulli

satpower
Beiträge: 11
Registriert: 06.12.2018, 17:01

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von satpower » 08.12.2018, 17:24

Hallo,
Howto ist mir bekannt, aber ich will mehr als ein Zusatz-Innenmodul in die Raspberrymatic einbinden, deshalb auch die Frage.
Beschrieben wird dort nur 1x Hauptmodulinnen, Außenmodul und ein weiteres Zusatz-Innenmessmodul, das funktioniert auch, aber will noch weiter 3stk. einbinden.

redy09
Beiträge: 40
Registriert: 18.11.2018, 12:31
Hat sich bedankt: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von redy09 » 08.12.2018, 23:20

Erst mal vielen Dank für das tolle Skript! Es ließ sich alles auf der CCU3 gut einrichten - aber es funktioniert nicht...
Zwei Fragen daher:
weiter vorne steht, dass die Anführungszeichen bei den ID's

Zeile 9 set clientid "123456789"
Zeile 10 set clientid "123456789"
Zeile 12 set username "username"
Zeile 13 set username "passwort"
Zeile 15 set deviceid "ID vom Innenmodul"
Zeile 16 set deviceid "ID vom Aussenmodul"
Zeile 17 set deviceid "ID vom Regenmodul"
Zeile 18 set deviceid "ID vom Windmodul"

wegfallen müssen. Stimmt das?

Und ich bekomme im Terminal folgende Fehlermeldung:

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

Was mache ich falsch?

redy09
Beiträge: 40
Registriert: 18.11.2018, 12:31
Hat sich bedankt: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von redy09 » 09.12.2018, 00:02

Hier noch mein Skript:

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 5c0bf2698c04c4b3cb8xxxxx           
    set clientSecret mVDw8mCNiLdS3a4rF9i8uId875xxxxx
    #  the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
    set username xx@xx
    set password xxxxx
    #  the following are MAC addresses of your indoor station and the outside module and rain module
    set deviceid 70:ee:50:xx:xx:xx
    set moduleid 02:00:00:xx:xx:xx
    #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



Dinosky
Beiträge: 13
Registriert: 12.01.2016, 00:14

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Dinosky » 09.12.2018, 03:29

Hallo, habe seit einiger Zeit mit dem Script Probleme :

Mein CUx (2.2.0) spuckt das aus:

Dec 9 03:10:00 HomeMatic daemon.info cuxd[1929]: pclose(tclsh /usr/local/addons/netatmo/netatmo.tcl) exit(1) 0s
Dec 9 03:14:20 HomeMatic daemon.info cuxd[2128]: pclose(tclsh /usr/local/addons/netatmo/netatmo.tcl) exit(1) 3s
Dec 9 03:15:00 HomeMatic daemon.info cuxd[2180]: pclose(tclsh /usr/local/addons/netatmo/netatmo.tcl) exit(1) 0s
Dec 9 03:18:09 HomeMatic daemon.info cuxd[2323]: pclose(tclsh /usr/local/addons/netatmo/netatmo.tcl) exit(1) 0s

Der Terminal Test dieses:

# tclsh /usr/local/addons/netatmo/netatmo.tcl
info: found stored credentials
info: token is still valid
can't read "otemp": no such variable
while executing
"log info "Outside temperature is $otemp""
(file "/usr/local/addons/netatmo/netatmo.tcl" line 173)


Und mein Script sieht so aus:
Pass und Mac Adressen sollten stimmen.


#!/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 "587ea03fe6da23a96e8b77ff"
set clientSecret "cIWdKYmqbQIGXReQ3RmjCSX6MUmSWTDQDNpMDbiLA"
# the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
set username "XXX"
set password "XXX"
# the following are MAC addresses of your indoor station and the outside module and rain module
set deviceid "XXX"
set moduleid "XXX"

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? ... e_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? ... e_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"

#
# set ReGaHss variables
#
set rega_cmd ""
append rega_cmd "var ITemp = dom.GetObject('CUxD.CUX9002003:1.SET_TEMPERATURE');"
append rega_cmd "var IHumi = dom.GetObject('CUxD.CUX9002003: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

Antworten

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