Netatmo Wetterstation (incl. CO2 Messung) einbinden

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

Moderator: Co-Administratoren

Roadrunner
Beiträge: 26
Registriert: 22.05.2018, 07:57

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Roadrunner » 22.05.2018, 20:13

Hallo,

Habe auf deinen Rat nochmal die einstellung geprüft.
War auf Wet+Hum. Hab aber einmal auf Wet+hum+reg umgeschalten und dann wieder retour . aufeinmal habe ich diese Daten im Anhang drin :shock:

Sollen das so viele sein ?

Aber im Poket control kann mann die werte nicht anzeigen oder ?

Werd mich jetzt daran versuchen die restlichen drei Innenstationen einzubinden :o
Dateianhänge
Unbenannt1.JPG
Unbenannt.JPG

albatros-hh
Beiträge: 122
Registriert: 07.09.2016, 13:33

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von albatros-hh » 23.05.2018, 17:35

Kannst in Pocket Control mal in "Einstellungen" und dann "Geräteauswahloptionen" beim Punkt Interface auf ALLE umstellen.
Dann werden auch CuXD Geräte angezeigt.

Roadrunner
Beiträge: 26
Registriert: 22.05.2018, 07:57

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Roadrunner » 24.05.2018, 13:39

Hallo,

Danke. Habe ich gemacht. Was ich meinte ist das ich den CO2 Wert nur unter den Punkt "Systemvariable" sehen kann.
Würde sie gerne wie die anderen Werte zb. von der Hauptstation im "Raum Wohnzimmer" anzeigen lassen.
Ist das möglich ?

2.
Ist das Normal das man in der App die Temperatur, Luftfeuchtigkeit usw. wie bedienen kann ? wenn man drauf tippt, kann man was einstellen und anwenden tippen ? Hab dann den haken bei den Geräteeinstellungen auf der CCU bei bedienbar entfernt, was zurfolge hat das auf der CCU die Werte beim Gerät nicht mehr sichtbar sind.

3.
Ich habe erfolgreich nach anleitung ein Zusatz Innenmopdul installiert.
Danach wollte ich noch ein Zusatzmodul istallieren über die gleiche vorgehensweise jedoch bin ich leider mit den Scripten noch sehr ungeübt und kann nicht erkennen welche Benennung ich ändern muss damit die CCU weis welche werte zu welchen Gerät gehört.

Indigo schreibt
"Zusatzmodul liefern Temperatur, Feuchtigkeit und CO2 Werte. Es wird nur eine neue Systemvariable für den CO2 Wert benötigt. Ich nenn sie mal CO2_SZ (ggf. Im unteren Teil den Namen anpassen). Und ein weiteres CuXD Gerät."

Hab das erste ZUsätzliche Innenmodul mit seinen Bezeichnungen aus der Anleitung eingestellt und hat auch funktioniert.
Beim zweiten hab ich den Namen CO2_SZ1 angelegt. jedoch kommt kein wert.

Hab aber auch noch nicht verstanden wie die Zuweisung des CO2 Wertes bei unten angeführten Zeilen funktioniert.
Temperatur und Feuchtigkeit ist über die ID Nummer CUxD zugewiesen.
Bei CO2 hatte ich gedacht das ich einfach append rega_cmd "var ZCO2 = dom.GetObject('CO2_SZ1');" eintragen muss.

Anscheinend ein Irrglaube :-)

Bitte kurz um Hilfe danke



log debug "polling zusatzmodule..."
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 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"


append rega_cmd "var ZTemp = dom.GetObject('CUxD.CUX9002001:1.SET_TEMPERATURE');"
append rega_cmd "var ZHumi = dom.GetObject('CUxD.CUX9002001: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');"

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

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Indigo » 25.05.2018, 10:11

Hallo,

Es muss noch mehr umbenannt werden.
Auch ztemp, zhumi und zco2. Sowie ZTemp, ZHumi und ZCO2. Sonst kann es passieren dass beide Innenmodule die Werte von nur einem Modul darstellen.
Wenn du dein ganzes Skript reinstellst kann man es nochmal anschauen.

DidiTheE
Beiträge: 99
Registriert: 19.02.2018, 20:52
Wohnort: Waldshut-Tiengen
Hat sich bedankt: 11 Mal
Danksagung erhalten: 7 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von DidiTheE » 09.06.2018, 20:45

Habe meine Netatmo Station nun schon ein paar Wochen erfolgreich eingebunden und funktioniert super.
Lediglich mit der Angabe der Windrichtung in Winkelgrad kann ich mich nicht recht anfreunden.

:arrow: Hat jemand eine Lösung, die Winkelgrad in Text (d.h. N / NW / W / SW / S / SO / O / NO) umzuwandeln und einer Systemvariablen zu zu weisen?
- Raspberry 3B (Charly)
- 121 Geräten mit insgesamt 493 Kanälen, 1 HmIP-HAP als Repeater
- 2 separate Raspberry mit jeweils Historian und ioBroker

Micha121
Beiträge: 203
Registriert: 21.12.2016, 23:53
Wohnort: Rheinland-Pfalz

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Micha121 » 11.06.2018, 17:21

Was mich mal interessieren würde: Beim großen Fluss sind die Rezensionen ziemlich durchwachsen, die Batterien vom Außenmodul sollen schnell leer sein oder das Modul sogar defekt und die Verbindung häufig abbrechen - habt Ihr diese Probleme nicht?

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

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Indigo » 12.06.2018, 09:43

Hallo,

ich hatte diese Probleme mit der Aussenstation. Die Batterien schienen schnell leer zu sein, aber es waren wohl nur korrodierende Kontakte. Habe alles gereinigt und beim Schliessen extra darauf geachtet, dass alles dicht ist. Wobei mir nicht klar ist wo da eine Undichtigkeit hätte sein können. Ausserdem verlor er immer mal wieder den Kontakt. Jetzt steht er etwas näher an der Hauptstation und läuft seitdem. Mein Regenmesser der viel weiter entfernt steht kennt solche Probleme nicht.
Bis zum ersten Batteriewechsel lief alles bestens. Auch weiter von der Station entfernt. Ich schiebe die Probleme also erstmal auf den Batteriewechsel.

Semmy
Beiträge: 165
Registriert: 05.02.2017, 14:12
Danksagung erhalten: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Semmy » 05.08.2018, 10:06

Hallo

Ich habe jetzt den Regenmesser mit Anzeige aktuell, stündlich und täglich eingerichtet. Ich möchte aber noch die Anzeige der letzten 6 Stunden. Was ist dafür alles einzutragen?

Mit freundlichen Grüßen
Semmy
Raspberrymatic 3+
Raspberrymatic LAN-Gateway

Marcus1807
Beiträge: 119
Registriert: 12.07.2013, 11:12
Wohnort: Fürth
Danksagung erhalten: 10 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von Marcus1807 » 02.09.2018, 17:55

Hallo,

in meinem Systemlog kommt bei der Ausführung des Scripts der folgende Fehler:
Sep 2 17:30:03 homematic-ccu2 local1.info netatmo.tcl: Guststrength is 9
Sep 2 17:30:03 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: var ITemp = dom.GetObject('CUxD.CUX9002001:1.SET_TEMPERATURE');var IHumi = dom.GetObject('CUxD.CUX9002001:1.SET_HUMIDITY');var OTemp = dom.GetObject('CUxD.CUX9002002:1.SET_TEMPERATURE');var OHumi = dom.GetObject('CUxD.CUX9002002:1.SET_HUMIDITY');var Rain1 = dom.GetObject('Regenmenge_30min');var Rain2 = dom.GetObject('Regenmenge_1d');var Rain3 = dom.GetObject('Regen_aktuell');var IPress = dom.GetObject('Luftdruck');var ICO2 = dom.GetObject('CO2');var INoise = dom.GetObject('Sonometer');var windA = dom.GetObject('Windrichtung');var windS = dom.GetObject('Windstaerke');var gustA = dom.GetObject('Gustangle');var gustS = dom.GetObject('Guststaerke');OTemp.State('16.7');OHumi.State('75');ITemp.State('21.9');IHumi.State('62');IPress.State('1018.1');ICO2.State('515');INoise.State('36');Rain1.State('0');Rain2.State('6.2');Rain3.State('0');windA.State('350');windS.State('3');gustA.State('356');gustS.State('9');var sdatetime = system.Date('%d.%m.%Y %H:%M:
Weiß jemand woran das liegt?

Vielen Dank
Marcus
------------------------------------------------------------------------------------------------
when you make a change: ensure that it is an improvement... :idea:
Raspberrymatic auf PI4+ mit SSD & iobroker
--------------------------------------------

vlcweb
Beiträge: 20
Registriert: 16.09.2018, 23:58
Hat sich bedankt: 1 Mal

Re: Netatmo Wetterstation (incl. CO2 Messung) einbinden

Beitrag von vlcweb » 17.09.2018, 00:04

HI HI,

ich bin ganz neu hier und in der Homematic Welt 8)
Ich möchte auch mein Netatmo einbinden, ich habe schon alles versucht und wie in der Anleitung mehrfach gemacht :P , es werden aber in der ccu keine Werte angezeigt.
Wenn ich das Skript teste kommt folgendes
info: found stored credentials
info: token is still valid
info: Outside temperature is 12.3
info: Outside humidity is 72
info: LogI is {"body":[{"beg_time":1537134437,"value":[[23.9,45,776,1026,37]]}],"status":"ok","time_exec":0.028149127960205,"time_server":1537134745}#=#=#
##O#- #
info: Inside temperature is 23.9
info: Inside humidity is 45
info: Inside CO2 level 776
info: Inside pressure is 1026
info: Inside noise level is 37
info: LogR is {"body":[{"beg_time":1537092000,"value":[[0]]}],"status":"ok","time_exec":0.052735090255737,"time_server":1537134745}#=#=#
##O#- #
info: Outside Regen1d is 0
info: LogR is {"body":[{"beg_time":1537134300,"value":[[0,0]]}],"status":"ok","time_exec":0.05102014541626,"time_server":1537134746}#=#=#
##O#- #
info: Outside rain2 is 0
info: Outside Regen30min is 0

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 blabla                     
    set clientSecret blabla

    #  the following are your normal netatmo credentials (the ones you used to setup your netatmo weather station)
    set username blabla
    set password blabla
    #  the following are MAC addresses of your indoor station and the outside module and rain module
    set deviceid "70:ee:50:2b:06:99"
    set moduleid "02:00:00:2b:00:99"
    set rainid "05:00:00:04:3d: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 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
Ich habe die ID etc. verfremdet...
Kann mir jemand hier einen Tipp geben.... Danke !!

Antworten

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