Netatmo Wetterstation (incl. CO2 Messung) einbinden
Moderator: Co-Administratoren
Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden - zu dumm dazu
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
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
Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden
Hallo,
Jetzt nicht aufgeben. Der erste Teil deines Skripts sieht schon gut aus. Es werden ja Werte ausgegeben wenn du es testest.
Im letzten Teil müssen z.B. Noch alle Zeilen die mit dem Windsensor zusammenhängen rausgelöscht werden. Diesen scheinst du ja nicht zu haben. Ansonsten ist ein häufiges Problem wenn die Gerätenamen und/oder Systemvariablen in der CCU nicht exakt gleich sind wie im letzten Teil deines Skripts.
Du kannst gerne noch ein paar Screenshots deiner angelegten Geräte und Variablen einstellen. Dann schau ich mir das an.
Jetzt nicht aufgeben. Der erste Teil deines Skripts sieht schon gut aus. Es werden ja Werte ausgegeben wenn du es testest.
Im letzten Teil müssen z.B. Noch alle Zeilen die mit dem Windsensor zusammenhängen rausgelöscht werden. Diesen scheinst du ja nicht zu haben. Ansonsten ist ein häufiges Problem wenn die Gerätenamen und/oder Systemvariablen in der CCU nicht exakt gleich sind wie im letzten Teil deines Skripts.
Du kannst gerne noch ein paar Screenshots deiner angelegten Geräte und Variablen einstellen. Dann schau ich mir das an.
Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden
Hi, Vielen Dank schon einmal !!
Das mit dem Wind habe ich rausgelöscht
Im Anhang habe ich ein paar Bilder angefügt, ich hoffe du findest mein Problem
Danke!!
Das mit dem Wind habe ich rausgelöscht
Im Anhang habe ich ein paar Bilder angefügt, ich hoffe du findest mein Problem
Danke!!
Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden
Hallo,
das ist echt merkwürdig. Das sieht alles gut aus.
Der fehler scheint tatsächlich hier zu liegen:
Zum Verständnis für mich:
Du hast ja schon einen erfolgreichen Test gehabt. In deinem Post ist ja ein erfolgreiches Ergebnis mit Werten. Geht das auch nicht mehr? Oder wie bekommst du die Werte und wann kommt der Fehler?
Frage an alle:
Hat es jemand auf einer CCU3 am Laufen?
das ist echt merkwürdig. Das sieht alles gut aus.
Der fehler scheint tatsächlich hier zu liegen:
Nur verstehen tue ich es nicht. Arbeitet eine CCU3 anders?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
Zum Verständnis für mich:
Du hast ja schon einen erfolgreichen Test gehabt. In deinem Post ist ja ein erfolgreiches Ergebnis mit Werten. Geht das auch nicht mehr? Oder wie bekommst du die Werte und wann kommt der Fehler?
Frage an alle:
Hat es jemand auf einer CCU3 am Laufen?
-
- 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
Hallo vlcweb
sehe jetzt bei dir erst mal kein Problem, wenn du denn Windmesser raus hast. Variablen und Script hab ich keinen Schreibfehler gesehen.
Was genau geht nicht? Stell vielleicht noch mal dein aktuelles Script rein. Zugangsdaten aus XXX nicht vergessen.
Gruß
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 - zu dumm dazu
Hallo herkherk hat geschrieben: ↑17.09.2018, 17:57Hallo 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
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
Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden
HIHI es werden keine Werte angezeigt in der homematic
mfg
info: found stored credentials
info: token is still valid
info: Outside temperature is 26.2
info: Outside humidity is 44
info: LogI is {"body":[{"beg_time":1537377943,"value":[[26.5,46,644,1023.4,43]]}],"status":"ok","time_exec":0.017301797866821,"time_server":1537378256}#=#=#
##O#- #
##O=# #
info: Inside temperature is 26.5
info: Inside humidity is 46
info: Inside CO2 level 644
info: Inside pressure is 1023.4
info: Inside noise level is 43
info: LogR is {"body":[{"beg_time":1537351200,"value":[[0]]}],"status":"ok","time_exec":0.10800004005432,"time_server":1537378256}#=#=#
##O#- #
info: Outside Regen1d is 0
info: LogR is {"body":[{"beg_time":1537377300,"value":[[0,0]]}],"status":"ok","time_exec":0.15305089950562,"time_server":1537378257}#=#=#
##O#- #
info: Outside rain2 is 0
info: Outside Regen30min is 0
mfg
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 XXX
set clientSecret XXX
# the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
set username XX
set password XX
# the following are MAC addresses of your indoor station and the outside module and rain module
set deviceid "70:ee:50:2b:99:99"
set moduleid "02:00:00:2b:99:99"
set rainid "05:00:00:04:99:99"
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"
#
# 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 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 "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
info: found stored credentials
info: token is still valid
info: Outside temperature is 26.2
info: Outside humidity is 44
info: LogI is {"body":[{"beg_time":1537377943,"value":[[26.5,46,644,1023.4,43]]}],"status":"ok","time_exec":0.017301797866821,"time_server":1537378256}#=#=#
##O#- #
##O=# #
info: Inside temperature is 26.5
info: Inside humidity is 46
info: Inside CO2 level 644
info: Inside pressure is 1023.4
info: Inside noise level is 43
info: LogR is {"body":[{"beg_time":1537351200,"value":[[0]]}],"status":"ok","time_exec":0.10800004005432,"time_server":1537378256}#=#=#
##O#- #
info: Outside Regen1d is 0
info: LogR is {"body":[{"beg_time":1537377300,"value":[[0,0]]}],"status":"ok","time_exec":0.15305089950562,"time_server":1537378257}#=#=#
##O#- #
info: Outside rain2 is 0
info: Outside Regen30min is 0
-
- 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
Hi vlcweb
mach mal bitte noch die 4 Zeilen raus.
Ich denke dann sollte es laufen.Wenn nicht schauen wir weiter. Das wird auf jeden Fall.
Gruß
Bulli
mach mal bitte noch die 4 Zeilen raus.
Code: Alles auswählen
append rega_cmd "var gustA = dom.GetObject('Gustangle');"
append rega_cmd "var gustS = dom.GetObject('Guststaerke');"
append rega_cmd "gustA.State('$gustangle');"
append rega_cmd "gustS.State('$guststrength');"
Gruß
Bulli
Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden
Yes, Wahnsinn es geht !! Danke
was nur vier zeilen so ausmachen !! Danke nochmal !
was nur vier zeilen so ausmachen !! Danke nochmal !