Hallo zusammen,
nachdem pachube in der letzten Zeit einen Wandel durchlaufen hat, der IMHO nicht unbedingt zu seinem Vorteil ist, habe ich mich mal nach Alternativen umgeschaut und bin auf ThingSpeak https://thingspeak.com (//thingspeak.com) gestoßen.
Das interessante:
- es gibt eine Public View und eine Private View. Die Außentemperatur darf jeder gucken, aber den Status meiner FHT80b-Aktoren muss nicht jeder sehen.
- der Sourcecode von ThingSpeak ist OpenSource, mann könnte also theoretisch einen eigenen ThingSpeak-Server aufsetzen.
Ich habe ein kleines Perl-Skript dazu geschrieben. Zum Hochladen der Werte nehme ich Curl. Falls nicht schon installiert, gibt es das bei Debian mit apt-get install curl
Für die Fritzbox habe ich mal ein kompiliertes curl bei 'fritzload' http://thomasheinz.net/tag/fritzload/ (//thomasheinz.net/tag/fritzload/) gefunden.
In fhem.cfg steht folgendes:
# .
# sending data to www.thingspeak.com .
####################
define n_thingspeak notify .* "/opt/fhem/update_thingspeak.pl "%NAME" "%EVENT" "%TYPE""
attr n_thingspeak loglevel 2
Das ganze schaut dann so aus:
- Public View:
(siehe Anhang / see attachement)
- Private View:
(siehe Anhang / see attachement)
Das Perlskript ist sicherlich nicht optimal (vor allem könnte es dahingehend optimiert werden, dass der arme kleine Prozessor nicht so gequält wird), aber es tut, was es soll.
Have Fun!
Helmut.
Hallo,
ZitatDas Perlskript ist sicherlich nicht optimal (vor allem könnte es dahingehend optimiert werden, dass der arme kleine Prozessor nicht so gequält wird), aber es tut, was es soll.
es ist heute Feiertag...
Ich habe das ganze nochmal optimiert, wobei ich mich an anderen Codeschnipseln hier im Forum orientiert habe.
Ich habe statt des Perlskripts nur ein notify/trigger. <fhem.cfg> schaut nun so aus:
# .
# sending data to www.thingspeak.com .
####################
## debugging:
## system("curl --trace tracecurl.out --trace-time ...
define n_ThingSpeak notify n_ThingSpeak {\
my $outtemp = ReadingsVal("sensor.outdoors","temperature", "");;\
my $outhumi = ReadingsVal("sensor.outdoors", "humidity", "");;\
my $lrtemp = ReadingsVal("sensor.livingroom","temperature", "");;\
my $lrhumi = ReadingsVal("sensor.livingroom", "humidity", "");;\
my $lract = ReadingsVal("heating.livingroom","actuator", "");; $lract=(substr($lract, 0, (length($lract)-1)));;\
my $brtemp = ReadingsVal("heating.bathroom","temperature", "");;\
my $bract = ReadingsVal("heating.bathroom","actuator", "");; $bract=(substr($bract, 0, (length($bract)-1)));;\
system("curl --silent --output '/dev/null' --request POST --header 'X-THINGSPEAKAPIKEY: 00YOURKEYHERE00' --data 'field7=$outtemp&field8=$outhumi&field1=$lrtemp&field2=$lrhumi&field3=$lract&field6=$bract&field4=$brtemp' http://api.thingspeak.com/update")\
}
attr n_ThingSpeak loglevel 1
define t_ThingSpeak at +*00:05:00 trigger n_ThingSpeak
attr t_ThingSpeak loglevel 1
Die Prozent im String für die Actuatoren und die von ThingSpeak zurückgelieferte 'entry_id' haben mir etwas Kopfzerbrechen bereitet, aber jetzt läufts.
Dank SYSSTAT kann ich auch Last und Temperatur beobachten. Beide Werte scheinen nun etwas niedriger zu sein.
Cheers,
Helmut.
Danke, läuft super, siehe http://blog.wenzlaff.de/?p=5849 (http://blog.wenzlaff.de/?p=5849)