Globale Variable erstellen?

Begonnen von chq, 27 Juli 2018, 13:08:12

Vorheriges Thema - Nächstes Thema

CBSnake

Moin Chris,

dazu musst du die Beschreibung zum DOIF lesen :-)

https://fhem.de/commandref_DE.html#DOIF

den \ wirst du da aber nicht finden, der erscheint nur wenn man sich die raw definition anschaut und bedeutet schlicht und einfach zeilenumbruch ;-)

Grüße
Achim
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

Otto123

Moin Chris,

die ersten beiden Sachen findest Du in der Doku von DOIF
? bedeutet an der Stelle, der Wert wird abgefragt, triggert aber das Modul nicht.
$SELF steht für den Namen des DOIF (er selbst) damit kann man das DOIF umbenennen ohne den Code ändern zu müssen.

Der Code selbst ist für die Raw Def, dort wird der Zeilenumbruch (nicht das Codezeilenzeilenende) mit dem \ maskiert.

Edit: Jetzt habe ich einfach geschrieben und nicht weitergeblättert :)

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

chq

Zitat von: Amenophis86 am 30 Juli 2018, 08:48:30
Deaktivieren = disable
Globale Variable = Readings

Die Antwort ist kurz und knackig. Fein.  :)

Wie setze ich denn ein anderes DOIF auf "disable"? Die Suche in der englischsprachigen Commandref ergibt 621 Treffer.

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Otto123

Hallo Chris,

und in der englischen commandref ist DOIF nicht komplett dokumentiert.
Bei den meisten Geräten geht das mit attr NameDesDevices disable 1
Beim DOIF geht das auch mit
set NameDesDoif disable

Es gibt auch noch disabledForIntervals ...

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

chq

Hallo Otto,

ich denke, dass ich mittlereile einen Großteil Deines Beispiels mit dem Saugroboter verstehe.  ;D

Solche konkreten Beispiele sind oftmals viel hilfreiecher als so manche "einfachen Idealbeispiele" aus der Commandref.

Zwei Fragen hätte ich jedoch trotzdem.

1. Gehst Du davon aus, dass der Saugvorgang immer dann vollumfänglich beendet ist, sobald der Saugroboter an die Ladestation fährt?
2. Was setzt Staubi1 auf "Sleeping"?

Danke.  :)

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Otto123

Moin Chris,

zu 1. ich unterbreche den Saugvorgang nicht. D.h. er wird gestartet und der Saugroboter erledigt selbstständig seine Arbeit und fährt, solange er sich nicht in irgendwelchen Schnürsenkeln selbst gefangen hat, zurück zur Ladestation. Ob der Saugvorgang voll umfänglich war kann ich nur im Nachgang an Hand der Karte feststellen.
zu 2. Das macht der Saugroboter selbst. Ich fahre ihn ja aus der Station zum Behälter leeren. Jetzt kann der Entleerer auf den Home Knopf drücken und er fährt wieder zurück. Oder ich lass ihn einfach stehen wo er steht, dann schaltet er in den Schlafmodus. Das passiert nach ca. 14 min. Ja es ist gemein, wo er gerade eingeschlafen ist wecke ich ihn wieder auf und fahre ihn zurück. Das passiert natürlich auch wenn man den Behälter nicht geleert hat. Dafür gibt es leider keinen Event.

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

chq

"saugen" ist ein Reading, welches Du via readingList erzeugt hast?

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Otto123

Das reading saugen entsteht einfach durch den setreading Befehl im DOIF selbst. Also irgendwann das DOIF am Tage definiert, Nachts um 4:00 Uhr schlägt der letzte DOIF Zweig zu und setzt das reading. Ab da ist es verfügbar.
Kann man natürlich auch bei der Anlage des DOIF einmal mit dem setreading Befehl setzen.
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

chq

#23
Was muss ich tun, damit ein DOIF im Moment des per enable "scharfgeschaltet werdens" prüft, ob es unmittelbar eines seiner Zweige ausführen muss?

Im u.a. Fall schaltet das NAS nicht ab, wenn im oberen DOIF set doif_NAS enable ausgeführt wird, aber niemand daheim ist.

Dieses DOIF schaltet das unten angegebene DOIF:

([14:59|Do]) (setreading $SELF doifState reset) ## Reset

DOELSEIF ([15:00-24:00|Do] and [Bewohner:"home"]) ## Zwischen 15-24 Uhr
(set nasBackupHD on) ## NAS Backup HD einschalten
(set doif_NAS disable) ## NAS-DOIF deaktivieren
(setreading $SELF doifState backupRunning) ## Zustand ändern

DOELSEIF ([$SELF:doifState] eq "backupRunning")
(set nasBackupHD off) ## NAS Backup HD ausschalten
(set doif_NAS enable) ## NAS-DOIF aktivieren
(setreading $SELF doifState hd_finished) ## Zustand ändern

DOELSEIF ([15:00|Fr]) (setreading $SELF doifState idle) ## Auf nächstes Backup warten


Inhalt des zu schaltenden DOIFs:

([Bewohner:"home"]) (set NAS on) DOELSEIF ([Bewohner:"absent"]) (set NAS off)

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Amenophis86

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

chq

Somit ist doch eigentlich ,,initialize" das, was ich benötige, oder?

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Amenophis86

nein, ist es nicht. Damit entscheidest du nur, welchen Zustand das DOIF annehmen soll, es wird nix geschaltet. Habe doch genau auf die Funktion verlinkt, welche du nutzen musst :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

chq

Hm, ok. Um das ausführen zu können, muss ich das entspr. DOIF aber schon zunächst einmal mit..

(set doif_NAS enable)

..aktivieren, oder? Anschließend dann..

(set doif_NAS checkall)

..oder?

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Amenophis86

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

chq

Super, vielen Dank. Werd's dann mal umbauen.

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig