Netatmo Wetterstation (incl. CO2 Messung) einbinden

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

Moderator: Co-Administratoren

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 » 05.02.2020, 07:37

Samsing hat geschrieben:
04.02.2020, 16:02
Bulli, vielen Dank!
Das hilft sehr. Mir war leider nicht bekannt, wie ich das Script außerhalb der CCU über CUXD ausführen kann.
............
Gruß
Samsing
Hallo Samsing
schön zu lesen und danke für die Rückmeldung.

Gruß
Bulli

mxsilver
Beiträge: 5
Registriert: 05.02.2020, 14:04
Hat sich bedankt: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von mxsilver » 07.02.2020, 10:53

Moin,

auch ich leider Probleme mit der Einbindung von Netatmo in meine CCU3.

Folgendes bekomme ich gesagt:


/usr/local/addons/netatmo$ tclsh /usr/local/addons/netatmo/netatmo.tcl
warn: no stored credentials found
can't read "expiresin": no such variable
while executing
"log debug "expires in $expiresin""
(procedure "parseOAuthResponse" line 14)
invoked from within
"parseOAuthResponse [requestToken $clientId $clientSecret $username $password"
invoked from within
"if { [file exists $cfgfile] == 1} {
log info "found stored credentials"
loadAccessToken
set now [clock seconds]
..."
(file "/usr/local/addons/netatmo/netatmo.tcl" line 150)

Kann mir hier jemand weiterhelfen, wo der Fehler liegt?

Gruß

Sebastian

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.02.2020, 08:23

mxsilver hat geschrieben:
07.02.2020, 10:53
Moin,

auch ich leider Probleme mit der Einbindung von Netatmo in meine CCU3.
...

Sebastian
Hallo Sebastian
ich habe noch keine Ahnung wo da das Problem ist. Das werden wir aber hinbekomen :D
Dein Script steht schon auf debug richtig?
Das Howto von Indigo bekannt?

Schreib einfach mal was du bis jetzt gemacht hast und zeig mal dein aktuell verwendetes Script. Zugangsdaten ausXXX nicht vergessen.

Gruß
Bulli

Megaron
Beiträge: 43
Registriert: 20.09.2019, 18:00
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Megaron » 11.02.2020, 21:32

Hallo Zusammen,

nachdem ich schon von vielen Tips aus dem Thread partizipieren konnte, stehe ich vor folgendem Problem wo ich nicht weiterkomme. Ich habe eine CCU3 auf der CuxD Historian wie auch Highcharts läuft. Ich habe weiterhin 4 Netatmo Stationen die die Temperatur aufzeichnen (über die CuxD eingebunden). Seltsamerweise kriege ich für den Innensensor (Netatmo Basis) folgende Darstellung im Diagramm (grün/Highcharts und violett/Historian). Kann mir nicht erklären wo das herkommt.
E04E16D8-897E-42BA-A46D-BE5220B5507A.jpeg
827CA200-7CFE-4EDF-A69C-EC034683BE0D.jpeg
Hat das schon mal jemand gehabt?
Viele Grüße Megaron

Megaron
Beiträge: 43
Registriert: 20.09.2019, 18:00
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Megaron » 22.02.2020, 07:00

Megaron hat geschrieben:
11.02.2020, 21:32
Hallo Zusammen,

nachdem ich schon von vielen Tips aus dem Thread partizipieren konnte, stehe ich vor folgendem Problem wo ich nicht weiterkomme. Ich habe eine CCU3 auf der CuxD Historian wie auch Highcharts läuft. Ich habe weiterhin 4 Netatmo Stationen die die Temperatur aufzeichnen (über die CuxD eingebunden). Seltsamerweise kriege ich für den Innensensor (Netatmo Basis) folgende Darstellung im Diagramm (grün/Highcharts und violett/Historian). Kann mir nicht erklären wo das herkommt.

Hat das schon mal jemand gehabt?
Hab die Ursache des Problems selber gefunden aber noch keine Lösung.
Auf der CuxD läuft ein weiteres Gerät das stündlich von Openwather Wetterinformationen herunterlädt. Dieser Vorgang löst anscheinend innerhalb der CuxD aus dass, das Netatmo Gerät (lädt alle 15 min) aus der CuxD (nur Zentrale Temperatur innen) einen weiteren Impuls/Aufzeichnung aufnimmt das ca 20-25 Grad niedriger ist.
Habe die Zeiten der beiden Geräte versucht zu entkoppeln aber ohne Erfolg. Weitere CUxd Geräte wirken sich z.b. Bei Schaltvorgängen nicht aus.
Viele Grüße Megaron

Eckstone
Beiträge: 20
Registriert: 17.08.2014, 09:35
Wohnort: Bernau
Danksagung erhalten: 2 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Eckstone » 23.02.2020, 10:05

Habe gestern bei Netatmo zugeschlagen, Wind-+Regenmesser zusammen 109,98Euro.
Falls auch noch jemand was brauch. :D
Schönen Sonntag

Martin_BY
Beiträge: 192
Registriert: 22.10.2013, 21:45

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Martin_BY » 29.02.2020, 10:25

Hallo zusammen!

Ich habe auch seit dem Update der CCU2 das Problem, daß das Script nicht mehr läuft.

Debugger sagt:

Code: Alles auswählen

debug: script has started
warn: no stored credentials found
debug: requesting new token
debug: response was /usr/bin/curl: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
debug: parsing authentication result
Ich habe im Script sowohl die Zeile aaskommentiert:

Code: Alles auswählen

#set ::env(LD_LIBRARY_PATH) "/usr/local/addons/cuxd"
als auch alle Pfade entsprechend auf die /usr/bin/curl angepasst.
Woran kann es denn jetzt noch liegen? Danke für Eure Hilfe!!

Mibra
Beiträge: 27
Registriert: 24.02.2020, 19:31
Hat sich bedankt: 7 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Mibra » 22.03.2020, 20:06

Hi,

ich habe nun auch den halben Sonntag versucht alles zum laufen zu bekommen aber leider will es nicht.

Evtl sehe ich langsam den Wald vor lauter Bäumen nicht mehr aber vielleicht hat mir hier ja noch jemand einen Tip.

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 "XXXXXXXXXX"                     
    set clientSecret "XXXXXXXXXXXXXXXX"
    #  the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
    set username "X"
    set password "
    #  the following are MAC addresses of your indoor station and the outside module and rain module
    set deviceid "7XXXXXXXXXX:"
    set moduleid "0XXXXXXXX:"
    set moduleid "0XXXXXXXXXX:"
    set rainid "XXXXXXXXXXX"
   # 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 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? ... 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"

log debug "polling regensensor module...1d"
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 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? ... 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 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? ... e_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"

log debug "polling zusatzmodule..." 
set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$gartenhausid&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...2" 
set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$geraeteraumid&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 z2temp z2hum z2co2 
log info "LogI is $response" 
log info "Inside temperature is $z2temp" 
log info "Inside humidity is $z2hum" 
log info "Inside CO2 level $z2co2" 

#
# 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());"
    

append rega_cmd "var Z2Temp = dom.GetObject('CUxD.CUX9002003:1.SET_TEMPERATURE');"
append rega_cmd "var Z2Humi = dom.GetObject('CUxD.CUX9002003:1.SET_HUMIDITY');" 
append rega_cmd "var Z2CO2 = dom.GetObject('CO2_Geraeteraum');" 
append rega_cmd "Z2Temp.State('$z2temp');" 
append rega_cmd "Z2Humi.State('$z2hum');" 
append rega_cmd "Z2CO2.State('$z2co2');"



rega_script $rega_cmd

Megaron
Beiträge: 43
Registriert: 20.09.2019, 18:00
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Megaron » 22.03.2020, 20:36

Mibra hat geschrieben:
22.03.2020, 20:06
Hi,

ich habe nun auch den halben Sonntag versucht alles zum laufen zu bekommen aber leider will es nicht.

Evtl sehe ich langsam den Wald vor lauter Bäumen nicht mehr aber vielleicht hat mir hier ja noch jemand einen Tip.

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 "XXXXXXXXXX"                     
    set clientSecret "XXXXXXXXXXXXXXXX"
    #  the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
    set username "X"
    set password "
    #  the following are MAC addresses of your indoor station and the outside module and rain module
    set deviceid "7XXXXXXXXXX:"
    set moduleid "0XXXXXXXX:"
    set moduleid "0XXXXXXXXXX:"
    set rainid "XXXXXXXXXXX"
   # 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 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? ... 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"

log debug "polling regensensor module...1d"
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 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? ... 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 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? ... e_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"

log debug "polling zusatzmodule..." 
set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$gartenhausid&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...2" 
set url "https://api.netatmo.net/api/getmeasure?access_token=$accesstoken&device_id=$deviceid&module_id=$geraeteraumid&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 z2temp z2hum z2co2 
log info "LogI is $response" 
log info "Inside temperature is $z2temp" 
log info "Inside humidity is $z2hum" 
log info "Inside CO2 level $z2co2" 

#
# 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());"
    

append rega_cmd "var Z2Temp = dom.GetObject('CUxD.CUX9002003:1.SET_TEMPERATURE');"
append rega_cmd "var Z2Humi = dom.GetObject('CUxD.CUX9002003:1.SET_HUMIDITY');" 
append rega_cmd "var Z2CO2 = dom.GetObject('CO2_Geraeteraum');" 
append rega_cmd "Z2Temp.State('$z2temp');" 
append rega_cmd "Z2Humi.State('$z2hum');" 
append rega_cmd "Z2CO2.State('$z2co2');"



rega_script $rega_cmd

Hallo Mibra,

Versuch mal die Anführungszeichen (“ .......“) in folgenden Zeilen wegzulassen.

set clientId XXXXXXXXXX
set clientSecret XXXXXXXXXXXXXXXX
# the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
set username xxxxxxx
set password xxxxxxxxxx
# the following are MAC addresses of your indoor station and the outside module and rain module
set deviceid 7XXXXXXXXXX
set moduleid 0XXXXXXXX
set moduleid 0XXXXXXXXXX
set rainid XXXXXXXXXXX
# set windid XX:XX:XX:XX:XX:XX
Viele Grüße Megaron

Mibra
Beiträge: 27
Registriert: 24.02.2020, 19:31
Hat sich bedankt: 7 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Mibra » 22.03.2020, 23:08

Danke für den Tip, leider keine Änderung.

Wo genau kann ich denn die Fehler auslesen. Im Systemprotokoll kommt nichts an.

Sorry ist mein erstes größeres Skript und habe leider damit kaum Erfahrungen.

Antworten

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