Hallo
ich habe ein device erstellt. Wie folgt:
define GHoma GHoma 4196
define GHoma_d7a064 GHoma_d7a064
attr GHoma_d7a064 room HWR
Die Werte von der Steckdose kommen auch richtig an. Jetzt möchte ein Notify erstellen und in einen dummy schreiben. Dieses ist wie folgt angelegt.
define WaschmaschineWatt dummy
attr WaschmaschineWatt room HWR
define WaschmaschineWattSet notify GHoma_d7a064.power {
my $power_w=ReadingsVal("GHoma_d7a064.power","power","");;
my $power=substr($power_w, 0,length($power_w)-2);;
fhem ("set WaschmaschineWatt $power");;
}
aber leider kommt dort nur ??? an. Wo ist der Fehler
define WaschmaschineWattSet notify GHoma_d7a064:power:.* {\
my $power=ReadingsNum($NAME,"power",0);;\
fhem ("set WaschmaschineWatt $power");;\
}
Gruß
Dan
vielen dank
und bei diesem notify
GHoma_d7a064:power.*
{
if (ReadingsVal("GHoma_d7a064","power","") >= 4 && Value("WaschmaschineBetrieb") ne "on") {
fhem ("set WaschmaschineBetrieb on");
fhem ("setstate WaschmaschineAutoOff defined");
}
}
define WaschmaschineBetrieb dummy
attr WaschmaschineBetrieb event-on-change-reading state
attr WaschmaschineBetrieb room HWR
ist das andere dummy
ich weiss nicht warum es mit diesem notify auch nicht klappt
Moin,
erstens: Verwende mal Code tags für deinen Code. Das ist das # oben im Editor über den Smilies.
zweitens: Schau dir nochmal genau an, was DeeSPe gepostet hat und vergleiche das mit deinem notify (Guck z.B. mal welche Funktion DeeSPe aufruft)
drittens: Bitte genauere Angaben als "geht nicht". Kommen falsche Werte an, triggert das notify nicht etc...
Grüße,
Oli
Moin,
kleiner Hinweis am Rande:
Mit set magic (https://fhem.de/commandref_DE.html#set) kann man den Code einfacher machen, aus {\
my $power=ReadingsNum($NAME,"power",0);;\
fhem ("set WaschmaschineWatt $power");;\
}
wird ganz kurzset WaschmaschineWatt [$NAME:power:d]
Gruß Otto
Hallo,
ich habe diesen Dummy erstellt, jedoch sehe nur ???. Ich finde den Fehler einfach nicht. Könnt ihr mir helfen
define WaschmaschineBetrieb dummy
attr WaschmaschineBetrieb event-on-change-reading state
attr WaschmaschineBetrieb room HWR
#Dummy WaschmaschineBetrieb einschalten bei Verbrauch größer 30 Watt
define WaschmaschineBetriebAn notify GHoma_d7a064:power.* {\
if (ReadingsVal("Waschmaschine","power","") >= 4 && Value("WaschmaschineBetrieb") ne "on") {\
fhem ("set UG.WaschmaschineBetrieb on");;\
fhem ("setstate WaschmaschineAutoOff defined");;\
}\
}
Gib doch mal folgendes in der Kommandozeile von FHEM ein:
{ReadingsVal("Waschmaschine","power","")}
Was bekommst Du zurück?
Jetzt versuche es wie von Dan geschrieben:
{(ReadingsNum("Waschmaschine","power",0)}
Ist da irgendein Unterschied?
Was ist Waschmaschine überhaupt? Hast Du bisher nicht erwähnt.
Gruß Otto
Edit Fehler korrigiert
ich bekomme die Wattanzahl zurück 3.49 W aber der Rest funktioniert nicht
Und kann man Äpfel mit Birnen vergleichen?
3.49 W Vergleich mit 4
Und "funktioniert nicht" ist eine sehr sinnfreie Aussage wenn man um Hilfe bittet. :'(
das stimmt schon aber angepasst geht es auch nicht.
GHoma_d7a064:power.*
{
fhem ("set WaschmaschineBetrieb on;; setstate WaschmaschineAutoOff defined")
if (ReadingsVal("GHoma_d7a064","power","") >= 3 && Value("WaschmaschineBetrieb") ne "on")
}
Also nochmal, dann bin ich raus :'(
{ReadingsVal("GHoma_d7a064","power","")}
versus
{ReadingsNum("GHoma_d7a064","power",0)}
Edit Fehler korrigiert
das verstehe ich nicht :-[ was muss ich denn machen??
WaschmaschineBetrieb müsste doch auf on gehen, wenn ich dein Code eingebe erhalte ich eine 0 obwohl power 3.49W hat
Bei welcher Variante erhältst Du eine 0?
Beschreibe bitte Schritt für Schritt was Du tust und welche Reaktion vom System Du bekommst. Ich kann mich nämlich gerade nicht auf Dein System hacken und Die Video Kamera hinter Dir ist offenbar kaputt! :'(
also ich gebe das in die fhem komandozeile ein
ReadingsNum("GHoma_d7a064","power","")
bekomme dann eine 0 zurück
Habe ich das irgendwo geschrieben? Copy & Paste kaputt?
{ReadingsNum("GHoma_d7a064","power",0)}
Edit Fehler korrigiert "" -> 0
ja damit erhalte ich eine 0 zurück
Und mit {ReadingsVal("GHoma_d7a064","power","")}?
Vielleicht ist der Wert derzeit 0 ?
jetzt erhalte ich 3.6 W aber dummy WaschmaschineBetrieb geht nicht auf on. Obwohl der Wert größer 3 ist
Nochmal abschließend aus der Doku
ZitatReadingsVal(<devicename>,<reading>,<defaultvalue>)
Gibt den Inhalt der "readings" zurück (den Inhalt der in dem "Readings"-Abschnitt von "list device" angezeigt wird)
ReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem Readingswert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet.
Das bei Dir ReadingsNum nicht funktioniert kann ich mir nicht erklären. War mein Fehler. Anstatt (default) "" muss es (round) 0 heißen
Aber Du kannst einen String "3.6 W" nicht mit einer Zahl vergleichen. Dann muss Du auf dein Konstrukt aus # 1 zurückgreifen und " W" entfernen.
Gruß Otto
ich habe diesen dummy,
aber es passiert einfach nichts.
#Dummy WaschmaschineBetrieb definieren
define WaschmaschineBetrieb dummy
attr WaschmaschineBetrieb event-on-change-reading state
attr WaschmaschineBetrieb room HWR
#Dummy WaschmaschineBetrieb einschalten bei Verbrauch größer 30 Watt
define WaschmaschineBetriebAn notify GHoma_d7a064:power.* {\
if (ReadingsVal("GHoma_d7a064","power","") >= 4 && Value("WaschmaschineBetrieb") ne "on") {\
fhem ("set UG.WaschmaschineBetrieb on");;\
fhem ("setstate WaschmaschineAutoOff defined");;\
}\
}
Ich bewundere Ottos Geduld und schalte mich mal dazu...
Wie Otto schon korrekt angemerkt hat vergleichst du Äpfel mit Birnen. ReadingsVal liest den Wert eines Readings aus, ReadingsNum versucht den numerischen Anteil herauszubekommen.
1.) Bitte noch einmal folgendes machen
ReadingsVal("GHoma_d7a064","power","")
in die Kommandozeile eingeben. Ergebis per copy paste übernehmen und hier posten (mit einem Verweis, dass das das Ergebnis von ReadingsVal ist.)
2.)
ReadingsNum("GHoma_d7a064","power",0)
in die Kommandozeile eingeben. Ergebis per copy paste übernehmen und hier posten (mit einem Verweis, dass das das Ergebnis von ReadingsNum ist.)
3.) In deinem Coding fällt mir spontan auf, dass du (korrekt) "WaschmaschineBetrieb" abfragst, dann aber versuchst "UG.WaschmaschineBetrieb" einzuschalten
4.) Bitte nicht diee fhem.cfg bearbeiten sondern immer alles über die Weboberfläche machen.
5.) Beobachte mal den Event-Monitor was da so an events kommt.
Edit: Das Ganze natürlich während die Waschmaschine läuft
Grüße,
Oli
Vielen Dank
bei {ReadingsVal("GHoma_d7a064","power","")}
kommt
3.71
bei
{ReadingsNum("GHoma_d7a064","power",0)}
kommt auch
3.71
Ok. 3.71 ist kleiner 4. Damit reagiert das notify richtig... Ändere das notify mal so, dass es was zu tun bekommt
Zitat von: bumbumb am 20 Januar 2018, 14:52:14
Vielen Dank
bei {ReadingsVal("GHoma_d7a064","power","")}
kommt
3.71
Und wieso kam da bisher ein Wert mit W am Ende? :'(
Das mit dem Syntax von ReadingsNum war mein blöder Kopierfehler, habe es durchgehend korrigiert.
Wie soll ich des abändern. Kannst du es mir etwas besser beschreiben. Vielen dank
Zitat von: Otto123 am 20 Januar 2018, 15:56:48
Das mit dem Syntax von ReadingsNum war mein blöder Kopierfehler, habe es durchgehend korrigiert.
Macht an der Stelle aber eh keinen Unterschied...
Zitat von: Otto123 am 20 Januar 2018, 15:56:48
Und wieso kam da bisher ein Wert mit W am Ende? :'(
Berechtigte Frage... Vielleicht weil ich den TE explizit gebeten hatte, das Ergebnis per copy/paste zu übernehmen ;-)
Zitat von: bumbumb am 20 Januar 2018, 15:59:21
Wie soll ich des abändern. Kannst du es mir etwas besser beschreiben. Vielen dank
Jetzt wird 's langsam wirklich kurios... In deinem notify steht:
if (ReadingsVal("GHoma_d7a064","power","") >= 4 && Value("WaschmaschineBetrieb") ne "on")
Es kommt aber nur ein 3.71 was meines Wissens eben nicht >= 4 ist. Ich würde dann mal vorschlagen z.B. folgendes zu machen
if (ReadingsVal("GHoma_d7a064","power","") >= 3 && Value("WaschmaschineBetrieb") ne "on")
Damit ist die Bedingung möglicherweise erfüllt und die folgende Zeile (die du hoffentlich mittlerweile wie oben beschrieben geändert hast) wird ausgeführt:
fhem ("set WaschmaschineBetrieb on");;
@KernSani Color geht im Code Tag nicht, wenn er das jetzt einfach übernimmt ::)
Zitat von: KernSani am 20 Januar 2018, 16:06:13
fhem ("set [color=red][s]UG.[/s][/color]WaschmaschineBetrieb on");;
Zitat von: KernSani am 20 Januar 2018, 16:02:29
Macht an der Stelle aber eh keinen Unterschied...
Dafür das eine null zurück kam offenbar schon.
Zitat von: Otto123 am 20 Januar 2018, 16:10:34
@KernSani Color geht im Code Tag nicht, wenn er das jetzt einfach übernimmt ::)
Ups... angepasst...