Hallo,
würde gerne abhängig von der Tageszeit die Ping-Häufigkeit bei meinen LAN-Abfragen in den PRESENCE-Definitionen ändern. Habe dazu ein NOTIFY abhängig vom TWILIGHT state erstellt. Leider ist mir aber nicht klar wie ich die Internals TIMEOUT_NORMAL und TIMEOUT_PRESENT von PRESENCE dann in dem NOTIFY ändern kann. Mit InternalValue kann ich sie auslesen, wie aber setzen???
Gruß,
Sascha
Hallo Sascha,
ich denke da musst Du einfach mit defmod arbeiten.
Gruß Otto
Hallo Otto,
danke für den Hinweis. Den Befehl kannte ich noch gar nicht.! Habe in der Commandef immer nur nach set... Befehlen gesucht. Warum gibt's eigentlich keinen Befehl setInternal, das nachträgliche Modifizieren von define erscheint mir irgendwie etwas "gebastelt"...
Gruß,
Sascha
Hallo Sascha,
Internals setzen wozu? Weil man meint es konfiguriert das Modul?
Der richtige Weg ist sicher solche Konfiguration oder Modifikation im laufenden Betrieb möglich zu machen, z.B. mit set Befehlen.
Die hat das Modul nicht, nicht vorgesehen, hat keiner gebraucht - ich habe keine Ahnung. :-[
Da musst Du mit dem Modulauthor drüber philosophieren ;)
Gruß Otto
Hallo nochmals,
mein notify-Eintrag mit defmod arbeitet wie gewünscht. Es gibt jetzt aber ein Problem mit FHEMWEB. Dort werden ständig ungesicherte Änderungen an der fhem.cfg angezeigt (rotes Fragezeichen am SAVE CONFIG-Button). Ist es möglich diese "Nebenwirkung" von defmod zu unterbinden?
Gruß, Sascha
Die Nebenwirkung kann man nicht verhindern - Du veränderst ja einen Device
Es gibt aber den Befehl save - der speichert die Änderungen
Hab ich befürchtet ;(
Fühl mich irgendwie bestätigt, daß defmod ein ziemlicher "Bastel"-Befehl ist. Hiermit ein HALLO+AUFGEPASST an die Entwickler des PRESENCE-Moduls: Bitte baut doch dort eine Set-Methode für das Timeout (sowohl für present als auch absent) ein. Die würde defmod in dem Falle dann überflüssig machen und wäre wesentlich eleganter!
Gruß, Sascha
Ich würde Dir nicht zustimmen:
defmod ist ein Befehl um eine definition zu verändern - bin mir nicht klar, wo hier gebastelt wird. Ein Define erfordert ja auch ein save und define ist ja wohl zentral und kein Gebastel.
Häufig wäre so etwas ein Attribut -> und damit wäre auch ein Save erforderlich, denn eine Konfiguration des Moduls soll ja normalerweise persistiert also abgespeichert werden
Ich sage jetzt mal nichts zu HALLO+AUFGEPASST ;)
Naja, mit defmod bastelt man eben an einer bereits erstellten Definition herum. Das ist nicht gerade so der elegante Programmierstil. Richtiger wäre das durch entsprechende Methoden / set-Befehle zu ermöglichen. So läuft das ja auch ansonsten in FHEM. Nur haben halt die Programmierer des PRESENCE-Moduls für das Einstellen des Timeouts leider sowas (bisher) noch nicht vorgesehen. Dafür gibt's eben ein HALLO+AUFGEPASST ;)
Gruß, Sascha
Zitat von: cartzilla am 14 Dezember 2016, 18:35:24
Nur haben halt die Programmierer des PRESENCE-Moduls für das Einstellen des Timeouts leider sowas (bisher) noch nicht vorgesehen. Dafür gibt's eben ein HALLO+AUFGEPASST ;)
Angenommen, man setzt das Timeout via Set-Kommando und nicht via define-Argument. Woher soll FHEM beim starten dann wissen, mit welchen Intervallen PRESENCE checken soll, wenn es nicht via define-Statement gesetzt wird?
Gruß
Markus
Das eine schließt doch das andere nicht aus. Über das define wird weiterhin der Start-Timeout-Wert festgelegt. Über set könnte dieser dann aber während der Laufzeit geändert werden (wäre jedenfalls mein Vorschlag).
Gruß, Sascha
Zitat von: cartzilla am 14 Dezember 2016, 18:35:24
Naja, mit defmod bastelt man eben an einer bereits erstellten Definition herum. Das ist nicht gerade so der elegante Programmierstil. Richtiger wäre das durch entsprechende Methoden / set-Befehle zu ermöglichen. So läuft das ja auch ansonsten in FHEM. Nur haben halt die Programmierer des PRESENCE-Moduls für das Einstellen des Timeouts leider sowas (bisher) noch nicht vorgesehen. Dafür gibt's eben ein HALLO+AUFGEPASST ;)
Gruß, Sascha
Was define und defmod mit programmieren zu tun hat erschielisst sich mir nicht
Save ist meine Lösung um definitionen oder veränderte Definition abzuspeichern (oder auch veränderte Attribute oder veränderten State)