FHEM Forum

FHEM => Automatisierung => Thema gestartet von: baukater am 11 Januar 2017, 16:59:54

Titel: [SOLVED] FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: baukater am 11 Januar 2017, 16:59:54
Ich hab im log folgende Fehlermeldung und komm einfach nicht darauf, was da nicht ganz in Ordnung ist. Die Werte werden
auf jeden Fall angezeigt. Hab schon 50 x draufgeschaut. Ich seh es einfach nicht.


2017.01.11 16:52:02 3: setreading FM_OleanderMini_r active : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.



Internals:
   DEF        FM_OleanderMini { $EVENT=~s/://; fhem("setreading FM_OleanderMini_r $EVENT") ;;
my $FM_OleanderMini_Temp= ReadingsVal("FM_OleanderMini_r","temperature",0) ;;
my $FM_OleanderMini_Fert= ReadingsVal("FM_OleanderMini_r","fertility",0) ;;
my $FM_OleanderMini_Lux= ReadingsVal("FM_OleanderMini_r","lux",0) ;;
my $FM_OleanderMini_Moist= ReadingsVal("FM_OleanderMini_r","moisture",0) ;;
fhem("setreading FM_OleanderMini_r state Dünger: $FM_OleanderMini_Fert Feuchtigkeit: $FM_OleanderMini_Moist Lux: $FM_OleanderMini_Lux Temperatur: $FM_OleanderMini_Temp")}
   NAME       OleanderMini_notify
   NR         726
   NTFY_ORDER 50-OleanderMini_notify
   REGEXP     FM_OleanderMini
   STATE      2017-01-11 16:52:02
   TYPE       notify
   Readings:
     2017-01-08 12:38:43   state           active
Attributes:
   room       FlowerSens
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 11 Januar 2017, 17:08:02
Hi,
Zitatsetreading FM_OleanderMini_r $EVENT
Im Event steht wirklich das reading und der Wert?

Gruß Otto
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: betateilchen am 11 Januar 2017, 17:09:01
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 11 Januar 2017, 17:14:26
Zitat von: betateilchen am 11 Januar 2017, 17:09:01

  • "state" dürfte nicht in $EVENT enthalten sein, deshalb läuft das erste setreading in eine Fehlermeldung, weil der ReadingName fehlt.
  • Um das Sonderreading state zu setzen, wenn man wirklich weiß, was man tut, sollte man setstate anstatt von setreading verwenden.
  • Wenn FM_OleanderMini_r vom Type dummy sein sollte, reicht ein einfaches set ...

Stimmt nicht ganz, setstate setzt nur STATE und nicht state. setreading state setzt beides.

Gruß Otto
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: betateilchen am 11 Januar 2017, 17:18:19
Ja, Du hast recht.
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: marvin78 am 11 Januar 2017, 17:18:43
Zitat von: Otto123 am 11 Januar 2017, 17:14:26
setreading state setzt beides.

Das kommt auf stateFormat an...
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 11 Januar 2017, 17:27:18
ZitatstateFormat
Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls nicht gesetzt, dann wird das state Reading übernommen. Sonst werden alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die Auswertung passiert bei jeder Änderung eines Readings.
Das will ich jetzt auch wissen:
Das bedeutet stateFormat setzt STATE wenn definiert? Und normalerweise führt ein set <dummy> bla und ein setreading <dymmy> state bla zu state und der setzt STATE? Außer es ist stateFormat definiert.
Nur ein setstate <dummy> bla setzt immer STATE? Egal ob stateFormat definiert ist?

Ich gebe zu: das mit setstate habe ich nicht gewusst, das habe ich gerade in der commandref gelesen. :)

Gruß Otto
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: betateilchen am 11 Januar 2017, 17:36:45
es kommt darauf an.

Worauf? Wie alt das Modul ist und wie gut der Modulentwickler gearbeitet hat.

Grundsätzlich gilt:

Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 11 Januar 2017, 17:46:46
 :) danke, ich glaube ich habs verstanden  :)
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: baukater am 11 Januar 2017, 17:55:35
Zitat von: betateilchen am 11 Januar 2017, 17:09:01

  • "state" dürfte nicht in $EVENT enthalten sein, deshalb läuft das erste setreading in eine Fehlermeldung, weil der ReadingName fehlt.
  • Um das Sonderreading state zu setzen, wenn man wirklich weiß, was man tut, sollte man setstate anstatt von setreading verwenden.
  • Wenn FM_OleanderMini_r vom Type dummy sein sollte, reicht ein einfaches set ...

ich hab jetzt mal das state herausgenommen, hab die Fehlermeldung aber noch immer.
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 11 Januar 2017, 17:59:50
Du hast das nicht verstanden!
Dieser Befehl ist mit Sicherheit falsch!
setreading FM_OleanderMini_r $EVENT
Das erste setreading in deinem notify.

Gruß Otto
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: baukater am 12 Januar 2017, 12:15:42
Zitat von: Otto123 am 11 Januar 2017, 17:59:50
Du hast das nicht verstanden!
Dieser Befehl ist mit Sicherheit falsch!
setreading FM_OleanderMini_r $EVENT
Das erste setreading in deinem notify.

Gruß Otto

Ja das kann gut sein  :(

Fehlerhaft war wohl, dass der Dummy und das Device auf dem Remote-Pi nicht den gleichen Namen hatten. Das hab ich
jetzt mal geändert.

Im log erscheint jetzt:

Ist doch zum Mäusemelken  ::)

2017.01.12 12:07:26 3: OleanderMini_notify return value: 25
2017.01.12 12:07:26 3: OleanderMini_notify return value: 25
2017.01.12 12:07:31 3: OleanderMini_notify return value: 25
2017.01.12 12:07:31 3: OleanderMini_notify return value: 25
2017.01.12 12:07:31 3: OleanderMini_notify return value: 25
2017.01.12 12:07:31 3: OleanderMini_notify return value: 25
2017.01.12 12:07:31 3: OleanderMini_notify return value: 25
2017.01.12 12:07:31 3: OleanderMini_notify return value: 25
2017.01.12 12:07:31 3: setreading FM_OleanderMini active : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.


Das notify hab ich so geändert:

Internals:
   DEF        FM_OleanderMini { $EVENT=~s/://; fhem("setreading FM_OleanderMini $EVENT") ;;
my $FM_Temp= ReadingsVal("FM_OleanderMini","temperature",0) ;;
my $FM_Fert= ReadingsVal("FM_OleanderMini","fertility",0) ;;
my $FM_Lux= ReadingsVal("FM_OleanderMini","lux",0) ;;
my $FM_Moist= ReadingsVal("FM_OleanderMini","moisture",0) ;;
}
   NAME       OleanderMini_notify
   NOTIFYDEV  FM_OleanderMini
   NR         691
   NTFY_ORDER 50-OleanderMini_notify
   REGEXP     FM_OleanderMini
   STATE      2017-01-12 12:07:31
   TYPE       notify
   Readings:
     2017-01-12 11:52:32   state           active
Attributes:
   room       FlowerSens


das setreading ... state in der letzten Zeile hab ich mal herausgenommen, nur um das mal zu vereinfachen. Die Zuweisung der Variablen machen natürlich erstmal keinen Sinn.

Und das Dummy-Device sieht aktuell so aus:


Internals:
   NAME       FM_OleanderMini
   NR         668
   STATE      active
   TYPE       dummy
   Readings:
     2017-01-12 12:07:31   battery         92
     2017-01-12 12:07:26   call            data
     2017-01-12 12:07:31   fertility       242
     2017-01-12 12:07:31   firmware        2.6.2
     2017-01-12 12:07:31   lux             291
     2017-01-12 12:07:31   moisture        25
     2017-01-12 12:07:31   state           active
     2017-01-12 12:07:31   temperature     21.4
Attributes:
   room       FlowerSens
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 12 Januar 2017, 12:28:47
Sorry aber so gut kann keine Glaskugel. Wenn Du nicht erklärst was Du überhaupt machst kann Dir wahrscheinlich keiner helfen.

Remote-Pi?

Kannst Du mal zeigen was im $EVENT steht? DEF        FM_OleanderMini { Log 1, "Hier kommt der Event: $EVENT"}

Gruß Otto
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: baukater am 12 Januar 2017, 17:02:39
Zitat von: Otto123 am 12 Januar 2017, 12:28:47
Sorry aber so gut kann keine Glaskugel. Wenn Du nicht erklärst was Du überhaupt machst kann Dir wahrscheinlich keiner helfen.

Remote-Pi?

Kannst Du mal zeigen was im $EVENT steht? DEF        FM_OleanderMini { Log 1, "Hier kommt der Event: $EVENT"}

Gruß Otto


2017.01.12 16:57:45 1: Hier kommt der Event: call data
2017.01.12 16:57:47 1: Hier kommt der Event: battery: 92
2017.01.12 16:57:47 1: Hier kommt der Event: temperature: 21.3
2017.01.12 16:57:47 1: Hier kommt der Event: lux: 17
2017.01.12 16:57:47 1: Hier kommt der Event: moisture: 24
2017.01.12 16:57:47 1: Hier kommt der Event: fertility: 225
2017.01.12 16:57:47 1: Hier kommt der Event: firmware: 2.6.2
2017.01.12 16:57:47 1: Hier kommt der Event: active


Hier zur Erklärung: Ich habe einen Remote-Pi an dem 4 Pflanzensensoren definiert sind und per FHEM2FHEM an den Haupt-Pi
übermittelt werden sollen. Auf dem Haupt-Pi hab ich Dummies mit gleichem Namen definiert die dann die Werte per notifiy zugeordnet werden sollen.


Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 12 Januar 2017, 22:29:20
Hi Baukater,

Zitat2017.01.12 12:07:31 3: setreading FM_OleanderMini active : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.
Zitat2017.01.12 16:57:47 1: Hier kommt der Event: active
Fällt Dir irgendetwas auf?
Alles klar?

Ich habe Dir von Anfang an gesagt dieser Befehl ist Mist:
setreading FM_OleanderMini_r $EVENT

Gruß Otto
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: baukater am 13 Januar 2017, 15:12:12
Zitat von: Otto123 am 12 Januar 2017, 22:29:20
Hi Baukater,
Fällt Dir irgendetwas auf?
Alles klar?

Ich habe Dir von Anfang an gesagt dieser Befehl ist Mist:
setreading FM_OleanderMini_r $EVENT

Gruß Otto

OK, hab nochmal den ganzen Thread gelesen. Das setreading stösst auf einen Fehler weil das Reading "state" zum value "active" fehlt. Ich hab ein Fehler im log,
aber das reading wird trotzdem gesetzt.

Ich bin doch sicher nicht der Erste, der von FHEM2FHEM Werte übertragen will. Laut Betateilchen müsste ein set ... reichen? Oder wie geht es nun richtig. Werd's heute
abend nochmal recherchieren und probieren.

Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: Otto123 am 13 Januar 2017, 16:40:59
Der Event
Zitat2017.01.12 16:57:45 1: Hier kommt der Event: call data
wird genauso einen Fehler werfen. Oder gibt es ein reading call?

Du verstehst das Problem nicht, Du kannst nicht völlig ungeprüft irgendeinen $EVENT in irgendeinen set oder setreading Befehl werfen.
Und du schickst jeden Event vom Gerät FM_OleanderMini  in diese notify.

Um Werte von FHEM2FHEM  zu übertragen gibt es sicher tausend gute Möglichkeiten. Eine davon wäre vielleicht clonedummy?
-> https://forum.fhem.de/index.php?topic=21718.0

Gruß Otto
Titel: Antw:FEHLER: setreading FM_OleanderMini_r active : Usage:
Beitrag von: baukater am 17 Januar 2017, 16:30:44
Danke, mit cloneDummy war es easy!