Hauptmenü

[Gelöst] Denkfehler

Begonnen von MarkoP, 18 April 2020, 09:38:16

Vorheriges Thema - Nächstes Thema

MarkoP

Hallo, ich bräuchte mal wieder eure Hilfe.

Und zwar geht es um folgendes, ich möchte bei Zubettgehen den "Homestatus" ändern und dadurch einen Nachtmodus einschalten (Lampen aus, Rolladen schließen, etc.).
Das funktioniert auch soweit prima. Nur das Schalten des "Homestatus" selbet bereitet mir etwas Probleme.

Hintergrundwissen:
Ich habe im Haushalt zwei Handys, die wenn eine bestimmte Variable geschaltet ist entweder um 22:30 Uhr oder aber ab 23:00 Uhr bei gleichzeitiger Aufladung bzw. morgens beim Aufstehen jeweils einen FHEM-Befehl absetzen und so zwei Dummy's entsprechend zwischen absent und present schalten. Diese sind mit structure zusammengefasst in einem Dummy "Nachtruhe". Um zu verhindern, dass der Nachtmodus schon eingeschaltet wird wenn aber noch jemand TV schaut will ich den Status meiner Dreambox einbeziehen. Deshalb habe ich zwei Notify's erstellt. Einmal einen der bei Wechsel des structure-device auf Absent (also wenn beide Handy's in Nachtruhe gehen) den "Homestatus" ändert wenn gleichzeitig die Dreambox im Standby ist:
Zitatdefine Nachtruhe_aktivieren_Schaltung notify Nachtruhe:absent { if ((Value("DM920uHD") == "off") ) {fhem ("set HomeStatus 2") } }
und ein zweites Gegenstück für den Fall, dass die Dreambox zuerst ausgeschaltet wird bevor die Handy's schalten
Zitatdefine Nachtruhe_aktivieren_Box notify DM920uHD:off { if ((Value("Nachtruhe") eq "absent") ) {fhem ("set HomeStatus 2") } }

Leider wird offenbar jeweils die IF-Condition nicht berücksichtig, so dass beispielsweise die Nachtschaltung bei erreichen der Uhrzeit (also wenn die Handy's beide in Nachtruhe gehen) bereits ausgelöst werden auch wenn die Box noch eingeschaltet ist. Ich denke das es ein Schreibfehler im Code ist, da ich ja auch noch nicht so erfahren bin, besonders mit der Schreibweise im Perl-Code.

Vielleicht hat aber auch jemand eine ganz andere Idee für eine bessere Lösung. Bin da offen und experimentierfreudig.

P.S. Die Handyaktionen werden mit Hilfe von Tasker und dem Plugin andFhem am Handy geschaltet.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Gisbert

#1
Hallo MarkoP,

man möge mich eines besseren belehren, aber bisher habe ich die Funktion "Value" noch nicht benutzt, weil ich sie nicht kannte oder sie es schlichtweg nicht gibt. Edit: prügelt mich nur, ob meiner Ignoranz.

Was funktionieren sollte, zumindest habe ich vergleichbare Konstruktionen laufen, ist folgendes. Hinweis: das ist raw-Format:
defmod Treppenhaus.Markise.runter.notify notify Treppenhaus.Markise.manrunter:trigger \
{fhem ("set Treppenhaus.Markise.runter.dum on-for-timer 3600;; \
set Treppenhaus.Markise off;;")} \
{if (ReadingsVal('RollladenWohnzimmerWest','Event','') eq "Up") {fhem ("set RollladenWohnzimmerWest DriveSlit;;")}}


Der Name deines Devices und des Readings sind natürlich an deine Bedürfnisse anzupassen.

Falls du eine Lösung gefunden hast, dann wäre eine Rückmeldung schön; falls es nicht funktioniert hat, dann höre ich eh von dir ;)

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Nobbynews

Im ersten Schritt würde ich aus:
if ((Value("DM920uHD") == "off")
mal
if ((Value("DM920uHD") eq "off")
machen.
Durch Value wird in Kurzform der state abgefragt.
Was ergibt in der Kommandozeile eingegeben:
{Value("DM920uHD")}
"on" oder "off" ?

Was passiert, wenn das notify triggert und die if-Bedingung nicht erfüllt wird und was wird dann zurückgegeben?

Gisbert

{Value("Device")}
Ich hab's ausprobiert, es liefert den state, allerdings auch alles inkl. Formatierungen, was man mit stateformat definiert hat.
Da finde ich es zielführender das Reading abzufragen, auf das man prüfen will.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Otto123

@Gisbert Ich interveniere da mal - Du kannst mich gern Krümelkacker nennen :)
Leider ist die commandref genauso unkonkret wie Du:
ZitatValue(<devicename>)
gibt den Status eines Gerätes zurück (entsprechend dem Ausdruck in Klammern, den Sie beim List-Befehl sehen).
Im englischen ist sie genaugenommen sogar falsch :(
ZitatValue(<devicename>)
returns the state of the device (the string you see in paranthesis in the output of the list command).

Value() liefert das Internal STATE zurück und nicht das Reading state!

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

Gisbert

Hallo Otto,

ich nehme es so genau, wie es mir möglich ist. Jedenfalls findet man nicht viel, wenn man die Funktion Value(<devicename>) in Zusammenhang mit Fhem googelt. Immerhin etwas dazu gelernt.

Stimmst du mir denn zu, dass es sinnvoller ist den Wert/String eines Readings zu benutzen als das, was als STATE ausgegeben wird? Im Zweifelsfall ist das für mich eindeutiger. Wie immer führen viele Wege nach Rom, und jedesmal einen neuen zu nehmen, ist mühsam.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

KernSani

Zitat von: Gisbert am 18 April 2020, 12:57:30
Hallo Otto,

ich nehme es so genau, wie es mir möglich ist. Jedenfalls findet man nicht viel, wenn man die Funktion Value(<devicename>) in Zusammenhang mit Fhem googelt. Immerhin etwas dazu gelernt.

Stimmst du mir denn zu, dass es sinnvoller ist den Wert/String eines Readings zu benutzen als das, was als STATE ausgegeben wird? Im Zweifelsfall ist das für mich eindeutiger. Wie immer führen viele Wege nach Rom, und jedesmal einen neuen zu nehmen, ist mühsam.

Viele​ Grüße​ Gisbert​

Das hängt davon ab, was du erreichen willst... Im reading "state" steht der Wert, wie er vom Device kommt. Im internal STATE steht der durch stateFormat aufbereitete Wert.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

MarkoP

Hallo zusammen,

ich fange mal oben an.

Die Funktion mit dem Value hab ich auch nur so aus einem Beispiel aus dem Netz kopiert. Kenne den Begriff aus anderen Programmiersprachen wo er in der Regel den Wert einer Variablen ausgiebt, also habe ich es auch hier in der Richtung interpretiert.

@Gisbert
leider verstehe ich dein Beispiel überhaupt nicht. Ich weiß auch nicht was du mit Raw-Format meinst. Ich bin halt noch Anfänger und hab längst nicht alles gelesen was es gibt.

@Nobbynews
Hatte es vorher auch schon mit eq statt == probiert, was keinen Unterschied ausgemacht hat. Mir ist dabei der Unterschied zwischen eq und == nicht klar.
Wenn du mir sagst wie ich die Rückmeldungen auslesen kann, würde ich sie dir gerne nennen. Ich kenne nur den Eventlog, aber da steht ja nur "der Befehl" drin. Eventuell halt noch davon ausgelöste Folgebefehle. Aber das wars dann auch schon.

@Otto123
Wo liegt der Unterschied zwischen dem Internal STATE und dem Reading state genau? Soweit ich mich entsinne hatten bei mir bisher beide immer den gleichen Wert.

Kleine Anmerkung am Rande, für Neulinge wie mich macht eine so ausufernde Seitendiskussion das Lesen und Lernen doppelt schwer, daher die Bitte sowas zukünftig doch lieber in einem eigenen Threat zu behandeln oder per direkter Diskussion. Ist nicht falsch zu verstehen. Zu viele Informationen sind halt genauso schädlich wie falsche Informationen.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

KernSani

Kurz auf die Schnelle:
,,eq" vergleicht Strings, ,,==,, vergleicht numerisch.
STATE vs. state: in STATE steht der durch stateFormat aufbereitete state


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KölnSolar

Zitatausgemacht hat. Mir ist dabei der Unterschied zwischen eq und == nicht klar.
Mit == vergleichst Du numerische Werte, mit eq Strings("Buchstaben"). Bei Dir also eq.
ZitatWo liegt der Unterschied zwischen dem Internal STATE und dem Reading state genau?
ZitatIm reading "state" steht der Wert, wie er vom Device kommt. Im internal STATE steht der durch stateFormat aufbereitete Wert.

Du bist sicher, dass die regexp im notify passen ? Ich würd immer meine Perl-Funktion mit "...notify devicename:.*..." testen oder umgekehrt das notify(den regexp) mit einem einfachen Befehl, zB. set lampe on.

Oli war flotter....
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

kjmEjfu

Ich würde mir DOIF anschauen, damit lässt sich das recht einfach umsetzen.
Dann kannst du bequem auch noch die Uhrzeit reinbringen.

https://wiki.fhem.de/wiki/DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen#Beispiel_C.29:_Kombinierte_Ereignis-_und_Zeitsteuerung
Migriere derzeit zu Home Assistant

MarkoP

@KernSani, @KölnSolar
Danke für die Erläuterungen. Vermutlich ist mir bisher noch kein Unterschied bei STATE/state aufgefallen weil ich nirgend stateFormat verwendet habe.

ZitatIch würd immer meine Perl-Funktion mit "...notify devicename:.*..." testen
Sagt mir leider nichts und mit den "..." ist für mich jetzt leider auch kein Kontext erkennbar um etwas abzuleiten. Habe aber die Commands direkt in der Eingabezeile entsprechend getestet und die funktionieren. die Funktion ist ja eh nicht das Problem. Es wird der IF-Part einfach nicht berücksicht, sogesehen funktioniert der Code zu gut wenn man so will.

@kjmEjfu
Werde ich mir die Tage in Ruhe durchsehen, schaffe ich wahrscheinlich aber nicht vor Mitte kommender Woche.

Was mich halt noch stört ist die grundsätzlich Bedingung über die Handy's. Da diese auch schon mal im Wohnzimmer beim Fernseh schauen aufgeladen werden wird dort das Kommando "absent" oftmals zu 'früh' gesendet, also wenn man eigentlich noch gar nicht zu Bett geht. Darum habe ich überhaupt versucht die Dreambox mit einzubinden, damit die Nachtschaltung nicht aus Versehen zu früh auslöst.
Gibt es da eventuell alternative Möglichkeiten wie man eine Nachtschaltung realisieren kann?
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

KölnSolar

ZitatSagt mir leider nichts und mit den "..." ist für mich jetzt leider auch kein Kontext erkennbar um etwas abzuleiten.
define Nachtruhe_aktivieren_Schaltung notify Nachtruhe:.* { if (Value("DM920uHD") eq "off" ) {fhem ("set HomeStatus 2") } }
ZitatHabe aber die Commands direkt in der Eingabezeile entsprechend getestet und die funktionieren. die Funktion ist ja eh nicht das Problem.
Die Funktion nicht, aber der regexp ist ja bereits der erste "Filter". Woher weißt Du, dass Dein Problem im 2. "Filter"(if-Bedingung) liegt ?

ZitatGibt es da eventuell alternative Möglichkeiten wie man eine Nachtschaltung realisieren kann?
Unbegrenzt. Ein dummy-Schalter in FHEM, eine Taste einer Funk-Fb, ein Funk-Taster, Fb-Taste des FHEM-tauglichen TVs, alexa.......
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

MarkoP

#13
Zitatdefine Nachtruhe_aktivieren_Schaltung notify Nachtruhe:.* { if
Wenn ich das Sternchen verwende wird die Schaltung ja auch beim Aufwachen ausgelöst, dass soll ja nicht sein.

ZitatDie Funktion nicht, aber der regexp ist ja bereits der erste "Filter". Woher weißt Du, dass Dein Problem im 2. "Filter"(if-Bedingung) liegt ?
Ich dachte das ich es verständlich ausgedrückt habe, aber offenbar beschreibe ich es so schlecht wie ich es verstehe.
Das notify FUNKTIONIERT! Nur leider funktioniert es IMMER sobald es ausgelöst wird, EGAL OB DIE IF-CONDITION ZUTRIFFT ODER NICHT!
Damit ist für mich als Laie klar, dass der regexp greift und auch das auslösende Kommando funktioniert. Lediglich die If-Bedingung wird nicht ausgewertet.

ZitatUnbegrenzt. Ein dummy-Schalter in FHEM, eine Taste einer Funk-Fb, ein Funk-Taster, Fb-Taste des FHEM-tauglichen TVs, alexa.......
Es soll schon automatisch sein, also nicht extra einen Button drücken müssen oder so.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Otto123

#14
Deine erste Bedingung ist definitiv falsch:
{"egal"=="off"}gibt immer 1 (true)

== ist ein numerischer Vergleich! Für String eq nehmen!

Die zweite ist sicher ok - nur zwei überflüssige Klammern, kann man so schreiben:
{ if (Value("Nachtruhe") eq "absent") {fhem ("set HomeStatus 2") } }

Man könnte den Wert mal mit {Value("Nachtruhe")} in der FHEM Kommandozeile prüfen.

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

Nobbynews

Zitat von: MarkoP am 18 April 2020, 20:48:10
Das notify FUNKTIONIERT! Nur leider funktioniert es IMMER sobald es ausgelöst wird, EGAL OB DIE IF-CONDITION ZUTRIFFT ODER NICHT!
Damit ist für mich als Laie klar, dass der regexp greift und auch das auslösende Kommando funktioniert. Lediglich die If-Bedingung wird nicht ausgewertet.
Wie ist das denn gemeint?
Die if-Bedingung hat nichts mit der Auslösung des notify zu tun, sondern wird erst nach Auslösung ausgeführt. Die Auslösung erfolgt über das Suchmuster bzw. regexp.
Schon mal ins Wiki geschaut? https://wiki.fhem.de/wiki/Notify
define <name> notify <Suchmuster> <command>
Bei Dir also:
<name>:  define Nachtruhe_aktivieren_Schaltung
<Suchmuster>: Nachtruhe:absent
<command>: { if ((Value("DM920uHD") eq "off") ) {fhem ("set HomeStatus 2") } }

Die if-Bedingung kann aber nur funktionieren, wenn bei der Abfrage von Value("DM920uHD") das Ergebnis "off" ist.
Daher nochmal, wie auch von Otto bzgl. "Nachtruhe" geschrieben: Was ergibt
{Value("DM920uHD")}
in der Kommandozeile von FHEM eingegeben?

Norbert

KölnSolar

ZitatWenn ich das Sternchen verwende wird die Schaltung ja auch beim Aufwachen ausgelöst, dass soll ja nicht sein.
Ach...
ZitatDu bist sicher, dass die regexp im notify passen ? Ich würd immer meine Perl-Funktion mit "...notify devicename:.*..." testen oder umgekehrt das notify(den regexp) mit einem einfachen Befehl, zB. set lampe on.
Nun beantwortet. ::)
Und schließe mich als Dritter u. gefühlt 10. Mal an mit:
ZitatWas ergibt in der Kommandozeile eingegeben:
Code: [Auswählen]
{Value("DM920uHD")}
"on" oder "off" ?
(Post #3)
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

kjmEjfu

Zitat von: MarkoP am 18 April 2020, 20:48:10
Es soll schon automatisch sein, also nicht extra einen Button drücken müssen oder so.

Drucksensor unter der Matratze.

Aber ich würde trotzdem über den Schalter nachdenken. Ist nicht aufwendig und absolut zuverlässig.
Es kann doch sicherlich auch passieren, dass die Handys gerade aufladen, die Dreambox ausgeschaltet ist, ihr aber Besuch habt ... und schon startet die Nachtschaltung.
Migriere derzeit zu Home Assistant

MarkoP

@Nobbynews
Die If-Condition soll ja den Command nur dann ausführen wenn sie zutrifft. Das tut sie aber nicht, sondern das notify wird IMMER ausgeführt, egal ob die If-Condition zutrifft oder eben nicht.
Was ist daran so schwer zu verstehen? Ich verzweifele gerade und weiß echt nicht wie ich es noch deutlicher schreiben soll.

@all
{Value("DM920uHD")} ergibt "on" wenn die Dreambox an ist und "off" wenn sie im Standby ist (ohne Anführungszeichen).
Das ist doch wohl logisch. Sorry, aber ich verstehe die Frage nicht.

@kjmEjfu
Sorry, aber verarschen kannst du deinen Opa. Wenn du nicht weiter helfen willst ist das deine Sache, aber dann halt dich raus damit der Threat sauber bleibt.
Dein Doif klingt interessant, aber dein letzter Post ...
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

KölnSolar

#19
Zitataber dein letzter Post ...
war in meinen Augen absolut in Ordnung u. ernst gemeint.

ZitatIch verzweifele gerade und weiß echt nicht wie ich es noch deutlicher schreiben soll.
So langsam wird es ja klarer. Hättest Du aber im Eingangspost schon machen können u. würde Rückfragen ersparen.  ::) Die Helferlein sind blind und spekulieren in alle Richtungen.

Ich guck mir nochmal Deinen Eingangspost an, weil irgendwas an Deinen Antworten nicht stimmen kann. die ifs(abgesehen von eq vs ==) sollten funktionieren. Stell doch bitte zwischenzeitlich ein list von DM920uHD u. Nachtruhe ein. Vielleicht fällt uns da ja was auf.

edit: so, da die notifys funktionieren sehen sie korrekt dann so aus
define Nachtruhe_aktivieren_Schaltung notify Nachtruhe:absent { if (Value("DM920uHD") eq "off") {fhem ("set HomeStatus 2") } }define Nachtruhe_aktivieren_Box notify DM920uHD:off { if (Value("Nachtruhe") eq "absent")  {fhem ("set HomeStatus 2") } }
Und ich weiß jetzt schon, dass Du schreien wirst, dass sie wieder nicht funktionieren. Glaub mir, sie tun das, was sie lt. ihrer Definition sollen. Guck es Dir im event monitor an.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Gisbert

Zitat@kjmEjfu
Sorry, aber verarschen kannst du deinen Opa. Wenn du nicht weiter helfen willst ist das deine Sache, aber dann halt dich raus damit der Threat sauber bleibt.
Dein Doif klingt interessant, aber dein letzter Post ...

Hallo MarkoP,

ich glaube nicht, dass kjmEjfu dich auf den Arm nehmen wollte. Es handelt sich um Alternativen, die auch hier im Forum schon ganz ernsthaft diskutiert wurden.

Wie sich ein Thread (von Threat wollen wir mal lieber Abstand nehmen) entwickelt, weiß man nie genau, es sei denn, es ist eine Doku, bei dem nur einer Schreibrechte hat. In den allermeisten Fällen wird für das geschilderte Problem eine Lösung gefunden, wie sich ja auch hier andeutet.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Otto123

@MarkoP Meinen Post #14 hattest Du gelesen und verstanden?
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

Nobbynews

Zitat von: MarkoP am 19 April 2020, 21:07:21
@Nobbynews
Die If-Condition soll ja den Command nur dann ausführen wenn sie zutrifft. Das tut sie aber nicht, sondern das notify wird IMMER ausgeführt, egal ob die If-Condition zutrifft oder eben nicht.
Was ist daran so schwer zu verstehen? Ich verzweifele gerade und weiß echt nicht wie ich es noch deutlicher schreiben soll.
Die if-Bedingung bzw. alles innerhalb der {} IST das Command aus der def des notify.
Das ist wie bei meinen Jung-Ingenieuren, denen man erst einmal beibringen muss, das zu sagen oder zu schreiben was sie meinen, und nicht das was sie meinen gesagt oder geschrieben zu haben....

Zitat von: MarkoP am 19 April 2020, 21:07:21
@all
{Value("DM920uHD")} ergibt "on" wenn die Dreambox an ist und "off" wenn sie im Standby ist (ohne Anführungszeichen).
Das ist doch wohl logisch. Sorry, aber ich verstehe die Frage nicht.
Es ist ein Unterschied, ob es "off", "Off" oder vielleicht sogar "OFF" liefert??

Zitat von: MarkoP am 19 April 2020, 21:07:21
@kjmEjfu
Sorry, aber verarschen kannst du deinen Opa. Wenn du nicht weiter helfen willst ist das deine Sache, aber dann halt dich raus damit der Threat sauber bleibt.
Und wenn man sich nicht helfen lassen will, dann lassen wir es halt sein.....
Und wech.....


MarkoP

ZitatDie if-Bedingung bzw. alles innerhalb der {} IST das Command aus der def des notify.
Wie man es ausdrückt ist doch egal, es kommt aufs gleiche Raus. Die If-Condition soll dafür sorgen, dass das Kommando nur bei Erfüllung der Bedingung ausgeführt wird und das funktioniert eben nicht.

ZitatEs ist ein Unterschied, ob es "off", "Off" oder vielleicht sogar "OFF" liefert??
Sorry, aber dann sagt das doch so auch. Für mich ist off erst mal off, an die Schreibweise denke ich da relativ wenig.

ZitatUnd wenn man sich nicht helfen lassen will, dann lassen wir es halt sein.....
Wer sagt denn das ich mir nicht helfen lassen will? Nur weil ich einen nutzlosen und dummen Kommentar der als Verarsche gemeint ist anprangere hat das nichts mit Hilfeverweigerung zu tun.
Wie würdest du denn auf so einen sinnlosen Kommentar reagieren, dich bedanken? Glaube ich nicht.

Nichts desto trotz scheine ich das Problem irgendwie gelöst zu haben. Jedenfalls hat gestern Abend die Schaltung die auf die Handys reagiert funktioniert.
Wo genau der Fehler liegt ist mir zwar nicht klar, doch nachdem ich die Notify gelöscht und neu angelegt (in der Befehlszeile Zeichen für Zeichen eingegeben statt Copy/Paste) habe, funktioniert es jetzt offenbar. Muss den zweiten heute Abend mal bewusst testen. Kann ja leider die Box nicht ständig an und aus schalten um rumzuexperimentieren.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Otto123

#24
Du kannst mich gern weiter ignorieren - aber dieser Code funktioniert nicht so wie Du denkst!
{ if ((Value("DM920uHD") == "off") ) {fhem ("set HomeStatus 2") } }
Bzw eben unabhängig von der Bedingung immer gleich. Es sei denn Value("DM920uHD") beginnt mit einer Zahl ungleich 0. Aber eigentlich war das nicht deine gewünschte Abfrage.
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

Gisbert

Hallo MarkoP,

ZitatNur weil ich einen nutzlosen und dummen Kommentar der als Verarsche gemeint ist

Wenn wir uns auf den gleichen Kommentar beziehen (glaube schon, Gewichtsensor unter den Lattenrost ...), dann war der gar nicht dumm, nutzlos oder eine Verarsche, wie ich versucht habe halbwegs sachlich darzustellen.

Auf jeden Fall solltest du dir überlegen, etwas großzügiger auf vermeintliche unsachliche Kommentare zu reagieren. Du tust dir selbst einen größeren Gefallen damit als anderen, zumindest mittel- bis langfristig.

Auf der immer noch sachlichen Ebene gehört zu einem gelösten Problem die Schilderung der Lösung (in Form von list, raw-Definition, ggf. Bild / hier eher nicht), damit andere, die das gleiche Problem haben, etwas lernen können. Als 2. Maßnahme sollte im Titel des 1. Beitrages durch Editieren ein [gelöst] oder ähnliches vorangestellt werden.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

MarkoP

@Otto123
Entschuldige ich ignoriere dich nicht, dachte nur dass es nicht extra Erwähnenswert ist das ich es nach der Erklärung längst geändert habe. Meine Schuld.

@Gisbert
Mag sein das ich überreagiert habe, aber manchmal kommen in Foren Antworten herüber die einfach unterstes Niveau sind.
Und ganz ehrlich einen Gewichtssensor sehe ich - besonders in meinem Stadium des Wissens - nicht wirklich als Sinnvoll an. Und was am wichtigsten Ist, es kommt ja auch immer auf die Schreibweise an und die klang nicht wirklich sachlich, oder?

Was das Problem angeht ist es ja noch nicht endgültig gelöst, da ich erst eine der beiden Notify's testen konnte.
Aber mit ein wenig Unterstützung werde ich die gewünschten Dinge - nach erfolgreichem Durchlauf des 2. Notify's - gerne ergänzen.
Dazu brauche ich allerdings eine Kurzanleitung, da mir weder die Begriffe List und Raw im Zusammenhang mit Fhem etwas sagen, noch wie ich den Titel des Threats nachträglich ändern kann.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Gisbert

Hallo MarkoP,

im Eingabefeld von Fhem eintippen: list <device>, dann wird alles zum jeweiligen Device angezeigt.
Die "Raw definition" findest du unter jedem Device, einfach anklicken, dann bekommst du im wesentlichen die Definition des Devices.

Ansonsten die Fhem-Einstiegslektüre durchackern, ins Wiki reinschauen, die commandref ist ebenfalls sehr nützlich, googlen und zuerst selbst schauen, ob man das Problem lösen kann. Das gelingt am Anfang nicht so gut, aber die Bemühungen bis dahin führen dazu, das Problem sehr gut zu beschreiben, inkl. list, raw definition, log-Auszug. Man kann nicht alles wissen, man kann sich aber bemühen.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

MarkoP

@Gisbert
Danke für die Erläuterungen. Mein Problem ist nicht das Bemühen, sondern das verstehen und behalten.
Gerade das Einsteiger-PDF hab ich jetzt bestimmt schon 8 Mal durchgelesen, aber wenn ich hinten angekommen bin hab ich viele Sachen vom Anfang schon wieder vergessen.

Ich habe einfach das Syndrom mir zuviel aufzuhalsen und viel zu viel durcheinander zu machen, das hat dann zur Folge, dass ich vieles schon wieder vergessen habe bevor ich es umgesetzt habe.
Merkt man auch daran, dass ich an zig Fronen gleichzeitig "kämpfe" und teilweise die Sachen auch durcheinander schmeiße.

Wenn ich - hoffentlich heute Abend - die zweite Syntex testen kann und diese funktioniert, werde ich die Daten zum Threat hinzufügen.

Ich weiß ja auch nicht was anders ist, wie gesagt habe ich statt die Sachen aus Netzseiten zusammen zu kopieren und mit Copy/Paste in die Befehlszeile reinzukopieren diesmal einfach Zeichen für Zeichen von Hand eingetragen und neu angelegt. Das einzige was mir dazu einfällt wäre, dass sich irgendwo unsichtbare Steuerzeichen ins define eingeschlichen haben - ist sowas denkbar?
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

MarkoP

So, nachdem ich beide Befehle mehrere Tage getestet habe nachdem ich sie händisch eingegeben habe, funktioneren beide jetzt gut.
Hab jetzt auch einige Änderungen an den Benennung gemacht, damit ich sie später besser nachvollziehen kann.

Hier nur wie gewünscht die List-Ausgaben:
Internals:
   DEF        DM920uHD:off { if ((Value("Nachtruhe") eq "absent") ) {fhem ("set Homestatus 2") } }
   FUUID      5e8cc077-f33f-b8b5-b3b0-a4a44eba0061dc0c
   FVERSION   91_notify.pm:0.193740/2019-05-11
   NAME       Homestatus_Nachtruhe_wechseln_Box
   NOTIFYDEV  DM920uHD
   NR         83
   NTFY_ORDER 50-Nachtruhe_aktivieren_Box
   REGEXP     DM920uHD:off
   STATE      2020-04-25 23:10:50
   TRIGGERTIME 1587849050.79319
   TYPE       notify
   READINGS:
     2020-04-19 11:53:04   state           active
Attributes:
   group      Ereignis (notify)
   room       Steuerung


Internals:
   DEF        Nachtruhe:absent { if ((Value("DM920uHD") eq "off") ) {fhem ("set Homestatus 2") } }
   FUUID      5e8cc1f8-f33f-b8b5-3f76-08c1c5f3623f92a5
   FVERSION   91_notify.pm:0.193740/2019-05-11
   NAME       Homestatus_Nachtruhe_wechseln_Handy
   NOTIFYDEV  Nachtruhe
   NR         84
   NTFY_ORDER 50-Nachtruhe_aktivieren_Schaltung
   REGEXP     Nachtruhe:absent
   STATE      2020-04-25 23:28:53
   TRIGGERTIME 1587850133.68397
   TYPE       notify
   READINGS:
     2020-04-19 11:51:51   state           active
Attributes:
   group      Ereignis (notify)
   room       Steuerung
   verbose    5
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8