Seite 1 von 2

Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 1. Nov 2017 14:04
von Meikel
Servus allerseits.

Wie bei jedem der mit SmartHome und Openhab anfängt gibt es seht viele Fragen die man sich nur schwer durch Suchen beantworten kann.

Wie muss ein Item definiert sein damit es sich nur dann schalten lässt wenn es auch tatsächlich online ist? Mittlerweile bekommen ich zumindest den Schaltzustand rückgemeldet in Openhab auch wenn ich das Modul zum Beispiel direkt über den MQTT Broker oder Alexa schalte. Leider sendet Openhab auch den MQTT Schaltbefehl wenn das Modul "offline" ist.

Ich nutze Sonoff Basics mit Tasmota Firmware.

PS: Wo gibt es eine verständliche Erklärung was die ganzen Variablen in der Items Datei bedeuten.

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 1. Nov 2017 16:29
von alkaline
PS: Wo gibt es eine verständliche Erklärung was die ganzen Variablen in der Items Datei bedeuten.
Nutze die Suche, z.B. "Openhab items" und man findet das hier: ;)
http://docs.openhab.org/configuration/items.html

Ich werde nicht so ganz schlau aus deiner Anfrage, ob prinzipiell sollte man ein SWTICH ja auch schalten können, wenn er offline, also aus ist, oder?

Code: Alles auswählen

rule "Example"
when
	Item item_1 received update
then
	if (Switch1.state == ON) { // Schaltzustand ist "Ein" oder "Online"
        // do something
end

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 09:29
von Meikel
alkaline hat geschrieben: 1. Nov 2017 16:29 Ich werde nicht so ganz schlau aus deiner Anfrage, ob prinzipiell sollte man ein SWTICH ja auch schalten können, wenn er offline, also aus ist, oder?
Dann versuche ich es mal etwas ausführlicher zu Beschreiben. Es geht bei meiner Anfrage um Switche die auch physikalisch von der Spannungsversorgung getrennt werden und somit "Offline" also nicht schaltbar sind. Dennoch kann ich den Schaltzustand in openHAB ändern was natürlich keine Auswirkung hat da der Switch ja ohne Strom ist. In meinen konkreten Fall wurde bei fünf LED Panel, welche alle am gleichen Lichtschalter hängen (alle ein/aus), jeweils ein Sonoff Basic mit Tasmota davor gesetzt um einzelne Lampen abschalten zu können. Der Grund......wenn alle Lampen an sind ist es taghell im "Männerkeller" und unter Umständen dann etwas ungemütlich beim Quatschen, Kickern, Biertrinken, what ever. Leider lassen sich die Lampen nicht dimmen und daher die Lösung mit den Sonoffs welche prima funktioniert mittels Alexa und openHAB (MQTT). Aber halt noch nicht perfekt und daher meine Anfrage ob man das umgehen kann. Es ändert sich beim Pseudoschalten ja auch der angezeigte Zustand der Funzel in openHAB und entspricht dann nicht dem Ist-Zustand.
Ich hoffe ich konnte mich verständlich ausdrücken :) .



PS: Und was den Aufbau der Items Datei angeht, klar habe ich mit die Infos in der Doku angesehen, aber als Einsteiger ist das alles etwas viel Input auf einmal......

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 09:56
von alkaline
Evtl. so etwas?

Code: Alles auswählen

rule "Example"
when
	Item item_1 received update
then
        Switch1.sendCommand(if(Switch2.state == ON) ON else OFF) // Schalte Schalter 1 an wenn Schalter 2 an ist, sonst schalte aus
end

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 10:38
von Meikel
Moin,

Tja und nun stehe ich da mit meinem kurzen Hemd. Ich bin froh dass ich es geschafft habe den Kram überhaupt ans Laufen zu bekommen. Und jetzt kommst du mit "Rules". Ich verstehe den Aufbau der Items noch nicht wirklich und soll jetzt Regeln erstellen, wobei mir der Sinn der vorgeschlagenen Regel nicht klar ist. Was hat Switch1 mit Switch2 zu tun, vielmehr wäre es doch sinnvoll den Status des Items abzufragen. Die 5 Switche sind alle parallel vor jeder einzelnen Lampe eingebaut. Das bedeutet der Schaltvorgang darf nur ausgeführt werden wenn einer(alle) der fünf Switche auch erreichbar ist.

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 13:09
von Meikel
Moin,

Tja und nun stehe ich da mit meinem kurzen Hemd. Ich bin froh dass ich es geschafft habe den Kram überhaupt ans Laufen zu bekommen. Und jetzt kommst du mit "Rules". Ich verstehe den Aufbau der Items noch nicht wirklich und soll jetzt Regeln erstellen, wobei mir der Sinn der vorgeschlagenen Regel nicht klar ist. Was hat Switch1 mit Switch2 zu tun, vielmehr wäre es doch sinnvoll den Status des Items abzufragen. Die 5 Switche sind alle parallel vor jeder einzelnen Lampe eingebaut. Das bedeutet der Schaltvorgang darf nur ausgeführt werden wenn einer(alle) der fünf Switche auch erreichbar ist.

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 13:22
von alkaline
Du hast also mehrere Schalter:
Einen Schalter, der alle 5 Lampen ein/ausschaltet sowie 5 Sonoff Basic Schalter, korrekt?
Und diese erste Schalter ist auch ein Sonoff nehme ich an? Oder ist das ein "normaler" und damit ein manueller Schalter?
Die 5 Switche sind alle parallel vor jeder einzelnen Lampe eingebaut. Das bedeutet der Schaltvorgang darf nur ausgeführt werden wenn einer(alle) der fünf Switche auch erreichbar ist.
Das liest sich für mich, als wären es nur 5 Schalter.

Du möchtest also vor dem Schalten in Erfahrung bringen, ob der jeweilige Schalter sich am MQTT angemeldet hat, richtig? Wenn ja ist er online --> also soll er geschaltet werden können und wenn nein, dann soll er nicht geschaltet werden können?

Hm, ich überlege gerade, ob dir nicht das Network Binding helfen kann, denn die Sonoff teile bekommen ja alle eine IP zugeteilt. Wenn also die IP erreichbar / online ist dann wäre der Schalter online.....

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 13:56
von Meikel
So jetzt mal namentlich.
Hi alkaline.

Erstmal danke dafür dass du dich meiner annimmst. Ich glaube du hast den Aufbau verstanden. Aber noch mal zur Sicherheit damit wir auch über den gleichen Sachverhalt sprechen. Eine Wechselschaltung schaltet das Deckenlicht nach alter Väter Sitte an/aus. Da die Beleuchtung aus 5 LED Panels besteht und ich nur komplett an an/aus schalten kann habe ich vor jeder Lampe einen Sonoff Basic mit Tasmota FW vorgeschaltet. Das Gute bei den Sonoffs ist dass sie den letzten Schaltzustand behalten wenn per Wechselschaltung wieder die Spannungsversorgung angelegt wird. Man merkt praktisch nichts davon dass die Teile davor geschaltet sind. Der Zustand der durch openHAB, Alexa oder direkt per MQTT Broker gesetzt wurde bleibt demnach auch nach dem Abschalten der Spannungsversorgung erhalten.

Hier der Inhalt der Items Datei:

Code: Alles auswählen

// Sonoff Basic
Switch Sonoff1 "Deckenlicht Mitte" <light> (Partykeller) {mqtt=">[raspberry:cmnd/Schalter-1/POWER:command:*:default],<[raspberry:stat/Schalter-1/POWER:state:default]"}
Switch Sonoff2 "Deckenlicht Eingang" <light> {mqtt=">[raspberry:cmnd/Schalter-2/POWER:command:*:default],<[raspberry:stat/Schalter-2/POWER:state:default]"}
Switch Sonoff3 "Deckenlicht Kicker" <light> {mqtt=">[raspberry:cmnd/Schalter-3/POWER:command:*:default],<[raspberry:stat/Schalter-3/POWER:state:default]"}
Switch Sonoff4 "Deckenlicht Ecke" <light> {mqtt=">[raspberry:cmnd/Schalter-4/POWER:command:*:default],<[raspberry:stat/Schalter-4/POWER:state:default]"}
Switch Sonoff5 "Deckenlicht Theke" <light> {mqtt=">[raspberry:cmnd/Schalter-5/POWER:command:*:default],<[raspberry:stat/Schalter-5/POWER:state:default]"}

Switch Sonoff6 "Keller Testschalter" <light> {mqtt=">[raspberry:cmnd/Schalter-6/POWER:command:*:default],<[raspberry:stat/Schalter-6/POWER:state:default]"}
Wobei der Sonoff6 mein Experimentierschalter ist der hier gerade neben mir liegt. Mein Hauptanliegen ist es dass im dazugehörigen Dashboard der aktuelle Status des Schalters angezeigt wird (on/off/offline) und ein Schaltbefehl nur dann ausgeführt wird wenn der Schalter auch reagieren kann. Aktuell ist es so dass ich im Dashboard alle Schalter betätigen kann und das Symbol zwischen aus/an wechselt ohne das Sichergestellt ist dass es auch tatsächlich eine Änderung gibt.

Ziemlich kryptisch was ich da so zusammentippe :D


...ach so, die einzelnen Abbildungen im Dashboard bekommen per MQTT mit dass sich der Zustand ändert wenn ich den Knopf am Modul drücke, oder per Alexa schalte.

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 15:31
von alkaline
Hallo Meikel

aus meiner Sicht wird sich dein Ansinnen nur mit einer Regel abbilden lassen, welche sich die einzelnen Zustände abholt und auf deren sie entscheiden muss, ob es Sinn macht, den Schalter zu schalten oder eben nicht.

Überlegung wäre:
1. Mittels Networkbinding feststellen, ob der Sonoff angemeldet ist oder nicht. Ggf. eine Regel bauen, welche entweder zeitgesteuert oder bei einem Event prüft, ob die IP erreichbar ist (ich weiß nicht, ob das networkbinding das nicht schon selbst erledigt?) Doku hier: http://docs.openhab.org/addons/bindings ... eadme.html
2. In der Sitemap mind. zwei Einträge für die Schalter vorsehen und über die Visability steuern: (Stichwort dynamische Sitemap, hier: http://docs.openhab.org/configuration/s ... c-sitemaps)
- einen Eintrag sichtbar mit visibility=[Switch1==ON]
- einen weiteren Eintrag mit visibility=[Switch1==OFF]
--> dasselbe für die anderen 4 machen, insgesamt also 10 Einträge

Die Schalter in der Sitemap (deinem Dashboard) wären demnach nur dann sichtbar und auch schaltbar, wenn die Sonoff Teile eingesteckt sind und damit eine IP haben.

Re: Schalten nur dann möglich wenn der Status Online ist?

Verfasst: 2. Nov 2017 15:44
von alkaline
Evtl. geht das auch über RSSI bzw Unreach:

Ich fand dazu folgendes: Doku: https://github.com/arendst/Sonoff-Tasmo ... ntegration

Status Topics / Items

It is furthermore recommended, to add the following status items for every Sonoff-Tasmota device.

sonoff.items:

A switch being 'ON' as long as the device is reachable

Code: Alles auswählen


Switch LivingRoom_Light_Reachable "Living Room Light: reachable" (gReachable)
    { mqtt="<[broker:tele/sonoff-A00EEA/LWT:state:MAP(reachable.map)]" }
Wifi Signal Strength in Percent

Number LivingRoom_Light_RSSI "Living Room Light: RSSI [%d %%]" (gRSSI)
    { mqtt="<[broker:tele/sonoff-A00EEA/STATE:state:JSONPATH($.Wifi.RSSI)]" }