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 » 14.06.2019, 11:50

Du hast es geschafft.

Deine Luftfeuchtigkeit ist auch da. Du siehst sie nur (noch) nicht.
Gehe einmal in der HomeMatic WebUI auf Einstellungen-Geräte zu deinem NetAtmo Aussen Gerät in die Einstellungen.
Dan stellst du das Gerät von Temp+Hum auf Temp um. Mit OK Bestätigen. Wieder in die Einstellungen gehen und zurück auf Temp+Hum stellen. Wieder mit OK bestätigen. Dann sollte es gehen. An dieser Stelle hängt es ab und zu.
Sollte es dann immernoch nicht gehen müsstest du vielleicht deinem Gerät in CuXD ein anderes Icon verpassen. Keine Ahnung warum, aber das hat auch schon einmal geholfen.

Dein Script passt auf jeden Fall. Es wird bis zum Ende abgearbeitet. Das heisst auch, dass allles in die CCU übertragen wird. Sonst würde das Script abbrechen.

NeoLF
Beiträge: 7
Registriert: 09.06.2019, 19:56

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von NeoLF » 15.06.2019, 15:57

Vielen Dank Indigo für Deine schnelle Hilfe!
Es läuft.
Von Temp+Hum auf Temp und wieder zurück gestellt und alles war da.
Klasse Danke, Danke!

Die Rollos sind gerade auch schon das erste mal von alleine nach dem angelegten Programm runter gefahren um die die Wärem draussen zu halten.

Die grundsätzliche Verbindung ist jetzt mal geschafft.

Vielleicht darf ich noch ein Paar Fragen stellen, die mir bei der ganzen Sache nun in den Sinn gekommen sind.
Ich habe dazu jeweils auch schon im Forum gesucht und mich etwas informiert.
Ein kurzer Tipp oder Hinweis wäre nur klasse.

1) Das Script fragt ja nun die Daten aus dem Internet von NetAtmo ab...
Wenn nun Ein Gewitter aufzieht und bevor der erste Wind bei mir ankommt z.B ein Blitz die Internetverbindung trennt, kommen ja keine Daten mehr an, nach denen die Homematic reagieren könnte.
- Ist es auch möglich direkt die Daten von den Netatmo Geräten innerhalb des Netzwerkes per Lan, WLan oder Funk abufragen/abzufangen? (evtl. mit zusätzlicher Hardware wie Funk-Stick oder ähnlichem)

2) In der CCU2 angelegten Programmen kann man keine Priorität zuordnen oder?
Ich habe ein "Sturm" Programm erstellt welches bei zu viel Wind die Aussenrollos/Jalousien hochfahren soll.
im Idealfall übersteuert dieses "Sturm" Programm durch eine höhere Priorität einfach alle anderen Programme bzgl der Rollos/Jalousien.
Das fände ich "Idiotensicherer" als in jedem Programm eine "Sturm" Bedingung einzuführen.
Gibt es so eine Möglichkeit, oder wie löst Ihr das?

3) Sprachsteuerung über google Home mini. (nächstes großes Projekt) opensource/nichtkommerzielle Lösung.
Ich habe da bisher nur quergelesen und muss mich da noch einarbeiten.
Wenn ich das richtig verstanden habe kann ich..
- entweder
einen HomematicIP AccessPoint einbinden um meine Ip-Komponenten per googleHome zu steuern.
-oder
das Stichwort ist "openHub" über das ich dann googleHome mit der CCU2 verbinden kann.

Vielen Dank und viele Grüße
CCU2
HM-LC-Bl1PBU- Rollladenaktor
HmIP-BROLL Rollladenaktor
HmIP-BDT Dimmaktor
NetAtmo Aussen/Innen und Wind eingebunden

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

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Indigo » 16.06.2019, 09:20

Hallo,

schön dass es funtioniert.
zu deinen Fragen:
1: Eine direkte Abfrage der Geräte ist bei NetAtmo nicht vorgesehen. Ein Problem, dass alle diese Anbieter mit sich bringen. Auch bei Kameras usw.
Einen Ausfall der auf einen defekt ausserhalb von NetAtmo zu suchen ist hatte ich bislang noch nicht. Allerdings fielen deren server in den letzten
Jahren ab und zu mal einen Tag aus. Blöd wenn es mit Sturm zusammenfällt.
2: Prioritäten gibt es nicht. Du wirst den Weg gehen müssen eine Variable "Sturm" anzulegen die dann auf True gesetzt wird. Die muss dann bei allen
anderen Programmen als Auslösebedingung mit abgefragt werden. Der Aufwand dadfür hält sich in Grenzen.
3:Da bin ich raus. Ich hatte mal Alexa über IOBroker am Laufen. Funktioniert hat es. Wurde aber von keinem Bewohner wirklich benutzt und daher
erstmal wieder abgeschaltet.

gandalf-c
Beiträge: 6
Registriert: 22.06.2019, 14:07

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von gandalf-c » 22.06.2019, 14:14

Hallo,

ich versuche verzweifelt nach dieser Anleitung viewtopic.php?t=28188 meine Netatmo Geräte einzubinden, bei dem Versuch das tcl-Script auszuführen scheitere ich. Zuerst hatte ich keine TCL TK Paket auf meinem Raspberry installiert, das habe ich dann gemacht, jetzt erscheint aber folgende Fehlermeldung und ich komme nicht weiter:
pi@raspberrypi:~ $ tclsh /usr/local/addons/netatmo/netatmo.tcl
couldn't load file "tclrega.so": tclrega.so: cannot open shared object file: No such file or directory
while executing
"load tclrega.so"
(file "/usr/local/addons/netatmo/netatmo.tcl" line 3)
hat Jemand eine Idee, woran es liegt?

Ich betreibe das piVCCU3 auf einem Raspberry.

cyberage
Beiträge: 4
Registriert: 29.09.2017, 11:05

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von cyberage » 03.08.2019, 10:34

@gandalff-c

Ich vermute mal das die Datei tclrega.so nicht vorhanden ist oder nicht da ist wo das script die erwartet.

cyberage
Beiträge: 4
Registriert: 29.09.2017, 11:05

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von cyberage » 03.08.2019, 10:39

Hallo,
Ich habe folgendes Problem und bitte um Mithilfe...

Ich hatte das ganze implementiert und es lief knapp zwei Jahre ohne Probleme. Dann wurden die Werte nicht mehr aktualisiert. Am Script liegt es nicht, das wird fehlerfrei ausgeführt und im Debug sehe ich, dass die aktuellen Werte korrekt von Netatmo übermittelt werden.

Die CuxxD Geräte waren mit Unreach markiert. Ich habe die dann gelöscht und neu mit anderer Seriennummer angelegt. Die Seriennummer habe ich im tcl script aktualisiert. In der Übersicht ist dann das Unreach verschwunden, nur werden immer noch keine Werte übernommen.
Komisch ist auch, das die Werte in den Systemvariablen (z.B. Regen) ebenfalls nicht aktualisiert werden.

Ich weiß nicht mehr weiter, hat hier jemand eine Idee?

Grüße

Christian

antares
Beiträge: 1
Registriert: 22.09.2019, 12:03

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von antares » 22.09.2019, 20:03

Hallo,

ich beschäftige mich auch grad mit der Anbindung der Netatmo an die CCU3.
Leider konnte ich meine Fehlermeldung hier noch nicht finden, daher hoffe ich, dass Ihr mir weiterhelfen könnt.
Ich habe laut Anleitung das Skript entsprechend angepasst und auf die CCU3 geladen. Wenn ich das ganze jetzt ausführe, erhalte ich folgende Rückmeldung:

# tclsh netatmo.tcl
info: found stored credentials
expected integer but got ""
while executing
"clock format $tokenexpires -format "%Y-%m-%dT%H:%M:%S""
invoked from within
"if { [file exists $cfgfile] == 1} {
log info "found stored credentials"
loadAccessToken
set now [clock seconds]
..."
(file "netatmo.tcl" line 151)

Der Code dazu sieht so aus:
#!/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 "id"
set clientSecret "secret"
# the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
set username "email"
set password "passwort"
# the following are MAC addresses of your indoor station and the outside module and rain module
set deviceid "70:ee:aa:54:45:12"
set moduleid "02:00:00:08:a4:24"
set rainid "05:00:00:00:2d:13"
set windid "06:00:00:07:16:e2"


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"

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"


#
# 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 "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 "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
Kann mir da irgend jemand weiterhelfen??

Vielen Dank schonmal für die Mühe!

Gruß

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von blueb6 » 25.09.2019, 17:56

die letzten ca 3 Jahre hat alles wunderbar funktionier,
seit 23.09.2019 ca 13:00 funktioniert es nicht mehr, keine Ahnung warum

meinerseits wurde nichts verändert

weis jemand etwas?

Danke

lg Tom
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

joe13
Beiträge: 67
Registriert: 10.11.2013, 22:16

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von joe13 » 26.09.2019, 10:00

Hallo,
musste Windrichtung deaktivieren

log info "WindAngle is $windangle"

irgendetwas wurde wohl geändert

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von blueb6 » 26.09.2019, 17:39

Danke hab den ganzen Windmesser mal deaktiviert, jetzt funkt wieder alles
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

Antworten

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