DOIF: error - Reading wird gesetzt, ist aber kein Fehler

Begonnen von Hausrobot, 29 April 2023, 10:29:19

Vorheriges Thema - Nächstes Thema

Hausrobot

Hallo,

ich setze bedingungsabhängig Werte in einer Wärmepumpe (älteres Modell, muss man "nachhelfen" ;) )
Defintion: defmod WPumpe WKRCD4 /dev/ttyUSB0@9600 60

Gesetzt wird so:
defmod di_wp_heizung DOIF ([SEdge:I_AC_Power:avg20] > 4300 ) ((set WPumpe Hzg-TempBasisSoll 24.4)) DOELSE ((set WPumpe Hzg-TempBasisSoll 20.4))
attr di_wp_heizung DOIF_Readings AC_Power_mittel:[SEdge:I_AC_Power:avg200]
attr di_wp_heizung disable 0
attr di_wp_heizung repeatcmd 900:1200
attr di_wp_heizung room 3 Heizung
attr di_wp_heizung verbose 5

Das Setzen der Werte per Hand liefert einen Dialog. Offenbar wird dieser in ein error-Reading bei DOIF abgelegt
error | set WPumpe Hzg-TempBasisSoll 20.4: Wrote 04 bytes starting from f8 with 3333a341 (20.3999996185303)

Ich ertrage das, comment wäre mir lieber. Hat es aber ggf. weitere Auswirkungen wenn ein error-Reading im DOIF gesetzt wird?

Viele Grüße
Hausrobot

Otto123

Hi,

die doppelten Klammern sind unnütz.

Mir scheint das Problem liegt im Device WPumpe. Was passiert denn bei dem Befehl in der FHEM Kommandozeile?
set WPumpe Hzg-TempBasisSoll 24.4Ich vermute da kommt auch der Fehler? Eventuell im Log?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Hausrobot

#2
Hallo Otto,
dann erscheint im mittleren Fenster die Ausgabe:

Wrote 04 bytes starting from f8 with 3333c341 (24.3999996185303)

Wirkt wie ein Debugmode.

verbose des WP-Device stand auf 3, Attribut gelöscht -> unbeirrt die Ausgabe, sicher aus 98_WKRCD4.pm.
Dort geschaut:
307 # SET command
308 #########################################################################
309 sub WKRCD4_Set($@)
310 {
..
354    return sprintf ("Wrote %02x bytes starting from %02x with %s (%s)", $bytes, $addr, unpack ('H*', $vp), unpack ($unp, $vp));



Vielleicht ist das zuviel des Guten an der Stelle. Den Rest des Moduls WKRCD4 verstehe ich so noch nicht.

Grüße Heimrobot

betateilchen

Du hast jetzt schon mindestens drei Threads zu DOIF in den Anfängerfragen aufgemacht - ist Dir eigentlich schon aufgefallen, dass es für DOIF einen eigenen Forumbereich gibt?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hausrobot

Zitat von: betateilchen am 29 April 2023, 11:41:14Du hast jetzt schon mindestens drei Threads zu DOIF in den Anfängerfragen aufgemacht - ist Dir eigentlich schon aufgefallen, dass es für DOIF einen eigenen Forumbereich gibt?
Nein, verflixt, sorry, danke für den Hinweis. In der Suche fand ich zu viele Fragen überall und in der Sucheingrenzung war es nicht gelistet.

Kann ich / wer den Thread dahin bewegen, wo er eigentlich hingehört?

Viele Grüße

betateilchen

Das kannst Du selbst machen. Am Ende der Bildschirmseite sollte sich ein Button befinden "Thema verschieben" oder so ähnlich.

Noch ein grundsätzlicher Tipp: https://forum.fhem.de/index.php?topic=13092.0
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Dann ist es ja vom Modul so gewollt, DOIF interpretiert die (ungewöhnliche) Ausgabe des set Befehls als Fehler.
Bei manchen Modulen hilft verbose <3 um sie still zu machen.

Ansonsten kannst Du mit "help WKRCD4" das Board ermitteln und dort eine Anfrage an den Modul Autor stellen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

Zitat von: Hausrobot am 29 April 2023, 10:29:19Hallo,

ich setze bedingungsabhängig Werte in einer Wärmepumpe (älteres Modell, muss man "nachhelfen" ;) )
Defintion: defmod WPumpe WKRCD4 /dev/ttyUSB0@9600 60

Gesetzt wird so:
defmod di_wp_heizung DOIF ([SEdge:I_AC_Power:avg20] > 4300 ) ((set WPumpe Hzg-TempBasisSoll 24.4)) DOELSE ((set WPumpe Hzg-TempBasisSoll 20.4))
attr di_wp_heizung DOIF_Readings AC_Power_mittel:[SEdge:I_AC_Power:avg200]
attr di_wp_heizung disable 0
attr di_wp_heizung repeatcmd 900:1200
attr di_wp_heizung room 3 Heizung
attr di_wp_heizung verbose 5

Das Setzen der Werte per Hand liefert einen Dialog. Offenbar wird dieser in ein error-Reading bei DOIF abgelegt
error | set WPumpe Hzg-TempBasisSoll 20.4: Wrote 04 bytes starting from f8 with 3333a341 (20.3999996185303)

Ich ertrage das, comment wäre mir lieber. Hat es aber ggf. weitere Auswirkungen wenn ein error-Reading im DOIF gesetzt wird?

Viele Grüße
Hausrobot

Returnwert ungleich 0 oder "" wird im Reading error festgehalten, weil es meistens auf einen Fehler hinweist. Es hat sonst keine Auswirkungen auf das Verhalten oder Performance des Moduls.

Man kann es unterbinden, indem man "" als Ausgabe dranhängt:

defmod di_wp_heizung DOIF ([SEdge:I_AC_Power:avg20] > 4300 ) {fhem"set WPumpe Hzg-TempBasisSoll 24.4";""} ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF