Hallo FHEM Forum,
ich habe nach der Anleitung im FHEM Wiki "http://www.fhemwiki.de/wiki/AVR-NET-IO (//www.fhemwiki.de/wiki/AVR-NET-IO)" versucht die 1Wire-Temperatur-Daten aus meinem AVR-Net-IO in FHEM das auf einem Raspberry Pi installiert ist einzulesen.
Leider erhalte ich in der .log-Datei immmer die Meldung: "WZ_Temp temp: parse error".
Wenn ich die Temperaturwerte per Hand in die .log Datei eintrage wird wie beschrieben das Webdiagramm in FHEM erstellt.
Die 1Wire-Sensoren können alle über den Webbrowser mit Muster "http://192.xxx.xxx.xxx/ecmd?1w+get+111222333444555a (//192.xxx.xxx.xxx/ecmd?1w+get+111222333444555a)" abgefragt werden.
Kann mir jemand weiterhelfen ?
Gruß Salvie
Hi Salvie,
bin mir nicht mehr ganz sicher, aber ich hatte vor einem halben Jahr das gleiche Problem. Ich ha so weit ich mich erinnern kann eine Modifikation in 66_ECMD.pm gemacht.
sub
ECMD_Write($$)
{
my ($hash,$msg) = @_;
my $answer;
my @r;
my @ecmds= split "\n", $msg;
my $nonl= AttrVal($hash->{NAME}, "nonl", 0);
foreach my $ecmd (@ecmds) {
Log 3, "$hash->{NAME} sending $ecmd";
ECMD_SimpleWrite($hash, $ecmd, $nonl);
#$answer= ECMD_ReadAnswer($hash, "$ecmd");
$answer= ECMD_SimpleRead($hash);
chomp($answer);
push @r, $answer;
Log 3, $answer;
}
return join("\n", @r);
}
Also das ECMD_ReadAnswer durch ECMS_SimpleRead ersetzt.
Aber, da so lange her ohne Gewähr. Ich habe mit der gleichen Konfiguration wie da etwa 20 Sensoren im Einsatz.
cu
gelbwichtel
Hallo gelbwichtel,
danke für Deinen Tipp. Ich habe die Angaben in der Datei 66-ECMD.pm nachgetragen. Leider hat es nicht funktioniert. Bei meiner Datei stand "Log 5" statt "Log 3". Ob dass wohl der Fehler ist. Da ich noch Neuling bin warte ich erst mal weitere Antworten ab.
Gruß Salvie
Hallo Salvie,
fangen wir mal von vorne an. Ich kann also davon ausgehen, dass du im Ethersex die Temperatursensoren siehst und auch die Werte angezeigt bekommst.
Diese Adresse hast du auch so in der fhem.cfg eingetragen ? Also in etwa so:
define NETIO01 ECMD telnet 192.168.178.223:2701
Wenn fhem dann gestartet wird, solltest du im Log so was finden
2013.08.15 17:17:20 3: ECMD opening NETIO01 (protocol telnet, device 192.168.178.223:2701)
2013.08.15 17:17:20 3: ECMD device opened
2013.08.15 17:59:24 3: telnetPort: port 7072 opened
Kannst du das mal checken ?
Hallo gelbwichtel,
danke dass Du bereit bist mich zu unterstützen.
Diese Eintragungen stehen in der fhem.cfg:
define NETIO_01 ECMD telnet 192.168.178.90:2701
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef
attr NETIO_01 room Interfaces
define WZ_Temp ECMDDevice ONEWIRE 105752290208009c
define 1Wire_Temp at +*00:15 set WZ_Temp messen;; sleep 2;; get WZ_Temp temp
define Log_Temperatur FileLog ./log/Temperatur-%Y.log WZ_Temp:.*(temp).*
define weblink_Temperatur weblink fileplot Log_Temperatur:1wtemp:CURRENT
attr weblink_Temperatur label "Temperatur Min $data{min1}, Max $data{max1},
Last $data{currval1}"
Folgende Meldungen stehen nach shudown restart in der logfile:
2013.08.16 09:58:05 0: Server shutdown
2013.08.16 09:58:09 1: Including fhem.cfg
2013.08.16 09:58:09 3: telnetPort: port 7072 opened
2013.08.16 09:58:10 3: WEB: port 8083 opened
2013.08.16 09:58:10 3: WEBphone: port 8084 opened
2013.08.16 09:58:10 3: WEBtablet: port 8085 opened
2013.08.16 09:58:10 3: ECMD opening NETIO_01 (protocol telnet, device 192.168.178.90:2701)
2013.08.16 09:58:10 3: ECMD device opened
2013.08.16 09:58:10 1: configfile: Unknown command Last, try help
RPi already defined, delete it first
2013.08.16 09:58:10 1: Including ./log/fhem.save
2013.08.16 09:58:10 1: usb create starting
2013.08.16 09:58:12 3: Opening CUL device /dev/ttyAMA0
2013.08.16 09:58:12 3: Can't open /dev/ttyAMA0: Permission denied
2013.08.16 09:58:12 1: usb create end
2013.08.16 09:58:12 2: SecurityCheck: WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute. Restart fhem for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2013.08.16 09:58:12 0: Server started with 16 defined entities (version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3008 2013-04-01 11:19:27Z rudolfkoenig $, pid 1933)
2013.08.16 09:59:10 3: Undefined subroutine &main::RPiTemp called at (eval 15) line 1.
2013.08.16 10:00:11 3: Undefined subroutine &main::RPiTemp called at (eval 16) line 1.
Gruß Salvie
Hallo zusammen,
ich habe heute noch einmal versucht eine Temperatureintrag in die Log-Datei zu bekommen, leider ohne Erfolg. Die 1wire-Sensoren lassen sich ohne Probleme mit dem Webbrowser "http://192.xxx.xxx.xxx/ecmd?1w+get+111222333444555a (//192.xxx.xxx.xxx/ecmd?1w+get+111222333444555a)" abfragen und liefern einen Temperaturwert z.B. 19.8.
Ich habe nun testweise nur 4 Sensoren angeschlossen.
In der fhem Log-Datei verbose 5 kann ich folgende Einträge finden.
...........
2013.08.25 19:10:50 5: Cmd: >get temp_aussen,temp_keller,temp_vorlauf_ist,temp_kessel_out temp<
2013.08.25 19:10:50 5: ECMDDevice: Analyze command >{"1w get 10ef3f5b02080068"}<
2013.08.25 19:10:50 5: NETIO_01 sending 1w get 10ef3f5b02080068
2013.08.25 19:10:53 5:
2013.08.25 19:10:53 5: Triggering temp_aussen (1 changes)
2013.08.25 19:10:53 5: Notify loop for temp_aussen temp:
2013.08.25 19:10:55 4: ECMDDevice temp_aussen temp
2013.08.25 19:10:55 5: ECMDDevice: Analyze command >{"1w get 105752290208009c"}<
2013.08.25 19:10:55 5: NETIO_01 sending 1w get 105752290208009c
2013.08.25 19:10:58 5:
2013.08.25 19:10:58 5: Triggering temp_keller (1 changes)
2013.08.25 19:10:58 5: Notify loop for temp_keller temp:
2013.08.25 19:10:58 4: ECMDDevice temp_keller temp
2013.08.25 19:10:58 5: ECMDDevice: Analyze command >{"1w get 10ef4c5b0208004b"}<
2013.08.25 19:10:58 5: NETIO_01 sending 1w get 10ef4c5b0208004b
2013.08.25 19:11:01 5:
2013.08.25 19:11:01 5: Triggering temp_vorlauf_ist (1 changes)
2013.08.25 19:11:01 5: Notify loop for temp_vorlauf_ist temp:
2013.08.25 19:11:01 4: ECMDDevice temp_vorlauf_ist temp
2013.08.25 19:11:01 5: ECMDDevice: Analyze command >{"1w get 1070152902080017"}<
2013.08.25 19:11:01 5: NETIO_01 sending 1w get 1070152902080017
2013.08.25 19:11:04 5:
2013.08.25 19:11:04 5: Triggering temp_kessel_out (1 changes)
2013.08.25 19:11:04 5: Notify loop for temp_kessel_out temp:
2013.08.25 19:11:04 4: ECMDDevice temp_kessel_out temp
2013.08.25 19:11:04 5: Triggering global (1 changes)
2013.08.25 19:11:04 5: Notify loop for global DELETED a_ONEWIRE
2013.08.25 19:11:04 5: Triggering global (1 changes)
2013.08.25 19:11:04 5: Notify loop for global DEFINED a_ONEWIRE
.........
In den log-Dateien steht nur der "Notify loop vor"-Eintrag mit Datum.
.........
2013-08-25_19:10:53 temp_aussen temp:
2013-08-25_19:12:50 temp_aussen temp:
2013-08-25_19:14:50 temp_aussen temp:
.........
Ich habe auch schon mit den neuen PM Dateien 66_ECMD.pm und 67_ECMDDevices aus "ECMD mit Readfunktion [Beitrag #87051]" von Herrn Neubert probiert leider ohne Erfolg.
Kann mir jemand weiterhelfen?
Gruss Salvie
Mach doch mal ein "createlog WZ_Temp" und schau nach, ob in diesem generierten Logfile irgendwelche Werte auftauchen. Ich gehe davon aus, dass Du einfach einen Fehler in Deiner FileLog Definition hast.
Hallo betateilchen,
creatlog WZ_Temp kann nicht mehr funktionieren da ich die Zeile in den fhem.cfg gelöscht habe.
Hier noch einmal meine Einstellungen zum Abruf von einem der 4 Sensoren:
fhem.cfg
....
define a_ONEWIRE at +*00:15:00 get temp_aussen,temp_keller,temp_vorlauf_ist,temp_kessel_out temp
attr a_ONEWIRE loglevel 6
attr a_ONEWIRE room Sensoren
define temp_kessel_out ECMDDevice ONEWIRE 1070152902080017
attr temp_kessel_out room 1Wire
define Log_temp_kessel_out FileLog ./log/temp_kessel_out-%Y.log temp_kessel_out:.*
define wl_Log_temp_kessel_out_1 weblink fileplot Log_temp_kessel_out:wl_Log_temp_kessel_out_1:CURRENT
attr wl_Log_temp_kessel_out_1 alias Kessel_Temperatur
attr wl_Log_temp_kessel_out_1 label "Kessel-Out Temp Min $data{min1}, Max $data{max1},Aktuell $data{currval1} °C"
attr wl_Log_temp_kessel_out_1 room Heizung
.....
.log.File
.....
2013.09.01 19:12:45 5: Cmd: >get temp_aussen,temp_keller,temp_vorlauf_ist,temp_kessel_out temp<
2013.09.01 19:12:45 5: ECMDDevice: Analyze command >{"1w+get+10ef3f5b02080068"}<
2013.09.01 19:12:45 5: NETIO_01 sending 1w+get+10ef3f5b02080068
2013.09.01 19:12:45 5: ECMD (ReadAnswer): parse error
2013.09.01 19:12:45 5: parse error
2013.09.01 19:12:45 5: Triggering temp_aussen (1 changes)
2013.09.01 19:12:45 5: Notify loop for temp_aussen temp: parse error
2013.09.01 19:12:45 4: ECMDDevice temp_aussen temp parse error
2013.09.01 19:12:45 5: ECMDDevice: Analyze command >{"1w+get+105752290208009c"}<
2013.09.01 19:12:45 5: NETIO_01 sending 1w+get+105752290208009c
2013.09.01 19:12:45 5: ECMD (ReadAnswer): parse error
2013.09.01 19:12:45 5: parse error
2013.09.01 19:12:45 5: Triggering temp_keller (1 changes)
2013.09.01 19:12:45 5: Notify loop for temp_keller temp: parse error
2013.09.01 19:12:45 4: ECMDDevice temp_keller temp parse error
2013.09.01 19:12:45 5: ECMDDevice: Analyze command >{"1w+get+10ef4c5b0208004b"}<
2013.09.01 19:12:45 5: NETIO_01 sending 1w+get+10ef4c5b0208004b
2013.09.01 19:12:45 5: ECMD (ReadAnswer): parse error
2013.09.01 19:12:45 5: parse error
2013.09.01 19:12:45 5: Triggering temp_vorlauf_ist (1 changes)
2013.09.01 19:12:45 5: Notify loop for temp_vorlauf_ist temp: parse error
2013.09.01 19:12:45 4: ECMDDevice temp_vorlauf_ist temp parse error
2013.09.01 19:12:45 5: ECMDDevice: Analyze command >{"1w+get+1070152902080017"}<
2013.09.01 19:12:45 5: NETIO_01 sending 1w+get+1070152902080017
2013.09.01 19:12:45 5: ECMD (ReadAnswer): parse error
2013.09.01 19:12:45 5: parse error
2013.09.01 19:12:45 5: Triggering temp_kessel_out (1 changes)
2013.09.01 19:12:45 5: Notify loop for temp_kessel_out temp: parse error
2013.09.01 19:12:45 4: ECMDDevice temp_kessel_out temp parse error
2013.09.01 19:12:45 5: Triggering global (1 changes)
2013.09.01 19:12:45 5: Notify loop for global DELETED a_ONEWIRE
2013.09.01 19:12:45 5: Triggering global (1 changes)
2013.09.01 19:12:45 5: Notify loop for global DEFINED a_ONEWIRE
.....
temp_kessel_out-%Y.log
.....
2013-09-01_18:57:45 temp_kessel_out temp: parse error
2013-09-01_19:12:45 temp_kessel_out temp: parse error
2013-09-01_19:27:47 temp_kessel_out temp: parse error
.....
Wo soll ich nun den creatlog Befehl eingeben: in der FHEM Web-Maske oder im Linux Terminal?
Gruß Salvie
Leider hat mir keiner helfen können. :-\
Ich habe deshalb heute versucht die neue FHEM Version 5.5 zu installieren.
In der fhem.cfg habe ich noch den Eintrag wie folgt geändert (rot=gelöscht, grün=neu):
fhem.cfg
....
define a_ONEWIRE at +*00:15:00 set temp_aussen,temp_keller,temp_vorlauf_ist,temp_kessel_out;; sleep 2;; get temp_aussen,temp_keller,temp_vorlauf_ist,temp_kessel_out temp
attr a_ONEWIRE loglevel 6
attr a_ONEWIRE room Sensoren
define temp_kessel_out ECMDDevice ONEWIRE 1070152902080017
attr temp_kessel_out room 1Wire
define Log_temp_kessel_out FileLog ./log/temp_kessel_out-%Y.log temp_kessel_out:(temp).*
define wl_Log_temp_kessel_out_1 weblink fileplot Log_temp_kessel_out:wl_Log_temp_kessel_out_1:CURRENT
attr wl_Log_temp_kessel_out_1 alias Kessel_Temperatur
attr wl_Log_temp_kessel_out_1 label "Kessel-Out Temp Min $data{min1}, Max $data{max1},Aktuell $data{currval1} °C"
attr wl_Log_temp_kessel_out_1 room Heizung
Endlich befinden sich nun die Temperatutwerte in der .log-Datei.
Vielen Dank an alle Helfer.
Gruß Salvie
Hallo
Netio versteht deinen befehl nicht, würde ich sagen.
Ersetze die '+' mal durch leerzeichen. Wenn du die classdef erstellt hast sollte das eigentlich klappen.
"1w get 1234783215"
Mfg
Hallo Netior,
die Abfrage funktioniert doch. In der .classdef hatte ich keine + Zeichen eingetragen. Du kannst jedoch mit dem Webbrowser die Temperaturwerte abfragen. Dann ist es sowohl mit als auch ohne + Zeichen möglich den Netio anzufragen.
Muster "http://192.xxx.xxx.xxx/ecmd?1w+get+111222333444555a"
Muster "http://192.xxx.xxx.xxx/ecmd?1w get 111222333444555a"
Gruß Salvie
Hallo FHEM Forum,
nach dem Update von 5.5 nach 5.7 habe ich erneut das Problem dass die 1Wire-Sensoren nicht mehr durch FHEM abgefragt werden. Ich habe nun die Anzahl auf 2 reduziert und verbose 5 in der fhem.cfg eingetragen um den Fehler einzugrenzen.
Über die Ethersex Webseite sind alle Sensoren abfragbar.
Die Abfrage mit "http://192.168.178.XXX/ecmd?1w+get+Sensor+1" bringt z.B. 43.2.
Folgender Eintrag enthält mein 1wire.cfg:
#########################################################################
## 1Wire Definitionen
## Zweck.........: 1Wire aktivieren
## Standort......: Server
## Typ...........:
## Installation..:23.11.2015
## Besonderheiten:
##
#########################################################################
# ------1Wire DS12S80 -----
define a_ONEWIRE at +*00:30:00 set temp_dummy,temp_s1 messen;; sleep 10;; get temp_dummy,temp_s1 temp
attr a_ONEWIRE room 1Wire
define temp_dummy ECMDDevice ONEWIRE 10ef3f5b02080068
attr temp_dummy alias 0_Dummy (Senor x)
attr temp_dummy room 1Wire
define Log_temp_dummy FileLog ./log/temp_-%Y.log temp_aussen:(temp).*
define SVG_Log_temp_s5_1 SVG Log_temp_s5:SVG_Log_temp_s5_1:CURRENT
attr SVG_Log_temp_s5_1 alias Sensor 1-4, 6
attr SVG_Log_temp_s5_1 room 1Wire
define SVG_Log_temp_s8_1 SVG Log_temp_s8:SVG_Log_temp_s8_1:CURRENT
attr SVG_Log_temp_s8_1 alias Sensor 5,7,8
attr SVG_Log_temp_s8_1 room 1Wire
define temp_s1 ECMDDevice ONEWIRE 105752290208009c
attr temp_s1 alias 1_Kessel (S1)
attr temp_s1 fp_Grundriss 25,250,1,
attr temp_s1 icon sani_boiler_temp
attr temp_s1 room 1Wire
define Log_temp_s1 FileLog ./log/temp_-%Y.log temp_s1:(temp).*
Hier der Auszug aus der log-Datei:
2015.11.23 20:09:23 5: Triggering a_ONEWIRE (1 changes)
2015.11.23 20:09:23 5: Notify loop for a_ONEWIRE Next: 20:11:23
2015.11.23 20:09:33 5: Cmd: >get temp_dummy,temp_s1 temp<
2015.11.23 20:09:33 5: ECMDDevice: Analyze command >{"1w get 10ef3f5b02080068"}<
2015.11.23 20:09:33 5: NETIO_01: sending command "1w get 10ef3f5b02080068"
2015.11.23 20:09:33 5: SW: 3177206765742031306566336635623032303830303638
2015.11.23 20:09:33 5: Triggering temp_dummy (1 changes)
2015.11.23 20:09:33 5: Notify loop for temp_dummy temp
2015.11.23 20:09:33 5: ECMDDevice: Analyze command >{"1w get 105752290208009c"}<
2015.11.23 20:09:33 5: NETIO_01: sending command "1w get 105752290208009c"
2015.11.23 20:09:33 5: SW: 3177206765742031303537353232393032303830303963
2015.11.23 20:09:33 5: Triggering temp_s1 (1 changes)
2015.11.23 20:09:33 5: Notify loop for temp_s1 temp
2015.11.23 20:09:33 2: After sleep: temp
In der temp_2015.log steht keine Temperatur nur "temp_s1 temp"
Kann mir jemand weiterhelfen?
Gruß Salvie
Ich gehe davon aus , dass deine classdefs inzwischen falsch ist. die ECMD Modul hat sich teilweise komplett geändert
schau mal hier
http://www.fhemwiki.de/wiki/AVR-NET-IO (http://www.fhemwiki.de/wiki/AVR-NET-IO)
Hallo Hary,
danke für den Hinweis aber diese Info hatte ich schon gelesen.
Das Update von 5.5 auf 5.7 enthält bereits die neuen Module und die onwire.classdef sowie die fhem.pl sind auch neu gewesen.
Da ich ein Backup erstellt hatte bin ich seit heute wieder mit Vers.5.5 im Wirkbetrieb.
Zur .log-Datei ist mir aufgefallen das nach dem "sending comand" ein "SW:3177206765742031303537353232393032303830303963" erscheint was vorher nicht war.
Das notify liefert keine Temperatur deswegen steht auch kein Wert in der temp_-2015.log.
Ist es möglich die neue Softwareversion zum Testen parallel auf dem Raspi zu betreiben, da mir ein paar Sachen der neuen Version schon gefallen z.B bei Edit ans Ende scrollen?
Gruß Salvie
es gibt keine onewire.class über fhem update, die muß man selber machen
Hallo Hary,
ich meinte die onewire.classdef hatte ich so wie im Wiki-Beitrag abgeändert.
Gruß Salvie