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
Hi,
Zitatsetreading FM_OleanderMini_r $EVENT
Im Event steht wirklich das reading und der Wert?
Gruß Otto
- "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 ...
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
Ja, Du hast recht.
Zitat von: Otto123 am 11 Januar 2017, 17:14:26
setreading state setzt beides.
Das kommt auf stateFormat an...
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
es kommt darauf an.
Worauf? Wie alt das Modul ist und wie gut der Modulentwickler gearbeitet hat.
Grundsätzlich gilt:
- Das Setzen des readings "state" sollte automatisch auch das internal STATE befüllen.
- Das Setzen des readings "state" löst einen Event aus, der sich dann auch um stateFormat und eine evtl. definierte EventMap kümmert, damit Anzeigen im Frontend entsprechend aktualisiert werden.
- Das internal STATE sollte von einem Modul/Device schon lange nicht mehr "hart" beschrieben werden.
:) danke, ich glaube ich habs verstanden :)
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.
Du hast das nicht verstanden!
Dieser Befehl ist mit Sicherheit falsch!
setreading FM_OleanderMini_r $EVENT
Das erste setreading in deinem notify.
Gruß Otto
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
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
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.
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
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.
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
Danke, mit cloneDummy war es easy!