DOIF )Odd number of elements in anonymous hash) ?

Begonnen von jailbreaker07, 25 März 2018, 15:47:26

Vorheriges Thema - Nächstes Thema

jailbreaker07

Hallo,

wo liegt in meinen DOIF der Fehler?

([Stromzaehler_JCT:energy] and {([Stromzaehler_JCT:kWh]>=[Zaehlerstand_doif:Zaehlerstand])})
(setreading Zaehlerstand_doif Zaehlerstand [Stromzaehler_JCT:kWh])
DOELSEIF
([Stromzaehler_JCT:energy] and {([Stromzaehler_JCT:kWh]<==[Zaehlerstand_doif:Zaehlerstand])})


Funktionieren tut das ganze, nur unter warning steht: condition c01: Odd number of elements in anonymous hash


Vielen dank für die Hilfe


Gruß

T.Meißner

betateilchen

ich kenne mich zwar mit DOIF nicht wirklich aus, aber was mir auffällt sind zwei Dinge.


  • was ist <== ?
  • wenn Du in der ersten Abfrage bereits auf >= prüfst, solltest Du im ELSEIF nicht nochmal auf = prüfen, denn das wird bei gleichen Vergleichswerten niemals zutreffen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jailbreaker07

Hallo,

habe es verbessert....

([Stromzaehler_JCT:energy] and {([Stromzaehler_JCT:kWh]>=[Zaehlerstand_doif:Zaehlerstand])})
(setreading Zaehlerstand_doif Zaehlerstand [Stromzaehler_JCT:kWh])
DOELSEIF
([Stromzaehler_JCT:energy] and {([Stromzaehler_JCT:kWh]< [Zaehlerstand_doif:Zaehlerstand])})


Das war aber leider nicht der Grund für den Fehler...

Ellert

Zitat{([Stromzaehler_JCT:kWh]>=[Zaehlerstand_doif:Zaehlerstand])}
Diese Syntax habe ich in der Commandref nicht gefunden, in welchem Blog wird das propagiert?

jailbreaker07

Solche Sachen kommen halt raus wenn man nicht ganz soviel Ahnung davon hat.... man bastelt solange bis es funktioniert ... Nur leider nicht wie in diesen Fall fehlerfrei.... 


Gesendet von iPhone mit Tapatalk

jailbreaker07

In meinen Fall stellt sich jetzt die Frage wie der Code richtig lautet.....


Gesendet von iPhone mit Tapatalk

Damian

Zitat von: jailbreaker07 am 25 März 2018, 17:53:48
In meinen Fall stellt sich jetzt die Frage wie der Code richtig lautet.....


Gesendet von iPhone mit Tapatalk

In der Bedingung im DOIF ist alles außerhalb eckiger Klammern Perlsyntax und da sind geschweifte Klammern fehl am Platz.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jailbreaker07

Hallo, wie mache ich das den mit Berechnungen im Bedingungsteil? Ich möchte ja das der Wert nur geschrieben wird wenn das eine Reading größer ist wie das andere... In Ausführungsteil habe ich es ja mit geschweiften Klammern hin bekommen....


Gesendet von iPhone mit Tapatalk

jailbreaker07

Hallo,

es geht jetzt... anscheinend hatte ich es am Anfang fast richtig..... und durch das ganze Herumprobieren ist dann der Schwachsinn herausgekommen....

([Stromzaehler_JCT:energy] and [Stromzaehler_JCT:kWh]>=[Zaehlerstand_doif:Zaehlerstand])
(setreading Zaehlerstand_doif Zaehlerstand [Stromzaehler_JCT:kWh])
DOELSEIF
([Stromzaehler_JCT:energy] and [Stromzaehler_JCT:kWh]< [Zaehlerstand_doif:Zaehlerstand])


So geht es jetzt...... am besten ist es manchmal einfach pause zu machen..... und dann nochmal mit einem frischen Kopf das ganze angehen...


Gruß

Thorsten