Wie Sonoff-RF-Bridge in .items anmelden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Micha-SHG
Beiträge: 23
Registriert: 11. Mär 2018 09:54

Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von Micha-SHG »

Hallo zusammen,
kann mir bitte jemand zeigen, wie man eine Tasmota-geflashte Sonoff-RF-Bridge (433MHz) in OpenHAB2 bei den items anmeldet?
Ich habe letzte Nacht (viel zu lange) im Netz gesucht und gesucht und leider nichts gefunden.

An die RF-Bridge will ich einen PIR2-Bewegungsmelder anmelden, der dann ein Treppenlicht über einen Sonoff-Basic schalten soll.

Vielen Dank

Rainer
Beiträge: 114
Registriert: 28. Nov 2017 21:33

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von Rainer »

Hi Micha,
ich habe keinen RF installiert und kann daher nichts sagen. Aber diese beiden Seiten erklären eigentlich alles.
https://community.openhab.org/t/itead-s ... e/15024/27
https://github.com/arendst/Sonoff-Tasmota/wiki/openHAB

Micha-SHG
Beiträge: 23
Registriert: 11. Mär 2018 09:54

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von Micha-SHG »

Ich habe es fast hinbekommen, brauche aber doch noch einen Detailrat von Euch.
Hier erst einmal die funktionierende Anmeldung der Sonoff RF-Bridge in .items:

String RfBridge_RfReceive "RfReceive [%s]" { mqtt="<[broker:tele/Sonoff-RF-Bridge/RESULT:state:JSONPATH($.RfReceived.Data)]" }


und meine aktuelle Regel in .rules (die noch nicht ganz funktioniert):

rule "RF433 switch sonoff"
when
Item RfBridge_RfReceive changed
then
var rfData = RfBridge_RfReceive.state.toString
switch (rfData) {
case "D34C5E":
{
sendCommand(Schalter_Treppenlicht, ON)
}
case "A00A17":
{
//...
}
}
RfBridge_RfReceive.postUpdate(rfData)
end


Mein aktuelles Problem ist nun, dass mein Treppenlich vom PIR-Bewegungsmelder nach einem RaspberryPi-Neustart nur ein einziges mal eingeschaltet wird. Ich erkläre mir das so, dass das Ereignis "Item RfBridge_RfReceive changed" nur ausgelöst wird, wenn sich der Status "RfBridge_RfReceive.state" tatsächlich ändert. Da bei jeder Bewegung vorm Bewegungsmelder aber immer der selbe Status vom PIR2 zur RF-Bridge gesendet wird, tritt hier kein "Change"-Ereignis ein. Nur nach dem Neustart wird der Status von "Nix" auf "D34C5E" geändert.

Weiß jemand, welches Ereignis ich stattdessen auswerten muss/kann?
Oder gibt es eine Möglichkeit den Status "RfBridge_RfReceive.state" nach der Auswertung zu löschen oder auf Null zu setzen?

Micha-SHG
Beiträge: 23
Registriert: 11. Mär 2018 09:54

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von Micha-SHG »

Ich hab's selber rausbekommen:
Man muss nach der Auswertung des Signals einfach am Ende der Regel den Status per postUpdate verändern, um so den Weg für ein neues Signal vom Bewegungsmelder vorzubereiten:

...
RfBridge_RfReceive.postUpdate("AAAAAA")
end

Puh, war das eine schwere Geburt. Ich habe mir das ganze Handling intuitiver vorgestellt.

Don Stefano
Beiträge: 83
Registriert: 24. Mär 2018 23:02
Answers: 1

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von Don Stefano »

Ich habe eine alternative Möglichkeit gewählt, um die Items zu steuern. Dabei werden direkt im Item die Response Daten gefiltert.

Code: Alles auswählen

...
Switch          Garden_Baum_Light         	    "Licht Baum"         	<light>         (Garden, gLight, Garden_Spots_Light)	{mqtt="<[mosquitto:openHAB1_RFBridge1/tele/RESULT:state:OFF:.*\"RfReceived\".*\"551114\".*], <[mosquitto:openHAB1_RFBridge1/stat/RESULT:state:OFF:.*\"RfCode\".*\"#551114\".*], >[mosquitto:openHAB1_RFBridge1/cmnd/RfCode:command:OFF:#551114], <[mosquitto:openHAB1_RFBridge1/tele/RESULT:state:ON:.*\"RfReceived\".*\"551115\".*], <[mosquitto:openHAB1_RFBridge1/stat/RESULT:state:ON:.*\"RfCode\".*\"#551115\".*], >[mosquitto:openHAB1_RFBridge1/cmnd/RfCode:command:ON:#551115]", autoupdate="false"}

...
Der RFCode wird direkt im Item angegeben und durch den Filterausdruck von den anderen Rückmeldungen der Bridge unterschieden. Ich kann damit auch die RF-Fernbedienung nutzen und openHAB zeigt mir den Status korrekt an.

schnitzer
Beiträge: 38
Registriert: 29. Dez 2018 10:17

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von schnitzer »

Hallo zusammen,
ich habe ebenfalls ein Anfängerproblem mit der Integration des Bewegungsmelders PIR2 in Openhab. Ich will mir eine kleine Alarmanlage bauen. Dazu
habe ich die Komponenten Sonoff RF 433 Bridge, den Bewegungsmelder PIR2 und den Sensor DW1 beschafft.
Die Bridge habe ich erfolgreich mit Tasmota geflasht. Der mosquitto Server ist auf dem Raspi installiert, Jason Path Transformation ist installiert. der Bewegungsmelder ist aktiv.
Wenn ich in in mqtt.fx nachsehe, kommt mir unter "tele/sonoff_br1/RESULT" folgende Info, wenn der Bewegungsmelder anschlägt:

Code: Alles auswählen

{"RfReceived":{"Sync":12490,"Low":440,"High":1240,"Data":"EB5B4E","RfKey":"None"}}
Soweit scheint alles zu funktionieren.
Das Problem kommt aber, wenn ich die Einbindung in Openhab versuche.
Ich habe gelernt, dass ich in folgender Reihenfolge vorgehen muss:
a)Thing anlegen
b)Channels anlegen
d)Items anlegen
e)Regeln anlegen
f)Sitemap anlegen.
Ich scheitere aber schon ziemlich am Anfang:
Ich habe folgendes Thing mit Channels angelegt:

Code: Alles auswählen

//Definition der Bridge
Bridge mqtt:broker:mosquitto "Mosquitto MQTT Broker" @ "MQTT" 
    [host="localhost",
    port=1883,
    secure=false,
    qos=0,
    reconnectTime=60000,
    keepAlive=30000,
    username="xxxxx",
    password="yyyyy"
    ]    
{
//------------------------------------------------------------
//Definition Thing für Sonoff RF 433 Bridge
    Thing topic Sonoff_Bridge1 "Sonoff_Bridge1" @ "MQTT" 
    
    {Channels:
        Type string : Bewegungsmelder "Bewegung erkannt" [ stateTopic="tele/sonoff_br1/RESULT", transformationPattern="JSONPATH:$.RfReceived.Data"] 
    } 
In Paper UI wird mir ein Communication Error angezeigt . Dahinter steht "java.lang.Exception: No MQTT client".
Wenn ich aus der Thing Definition den Channel auskommentiere, ist die Bridge aber online.
Ich komme also gar nicht dazu, ein Item oder eine Regel anzulegen.
Im ersten Schritt für die kleine Alarmanlage, würde ich gerne dass in der Sitemap angezeigt wird, wenn eine Bewegung erkannt wird.
Meine Fragen sind also:
1) Was mache ich bei der Definition des Channels falsch ?
2) Wie muss das Item aussehen, das ich in der Sitemap darstellen will?
3) Wie muss eine Regel aussehen, die mir beim Erkennen eine Bewegung in der Sitemap darstellt, dass es eine Bewegung gab?
Ich hoffe, ich hab mein Problem ausreichend erklärt.
Wäre schön, wenn einer von euch Hilfestellung leisten kann.
LG Konrad

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von udo1toni »

Nimm mal das transformationPattern aus der Definition raus, funktioniert es dann?

Lass alle Parameter weg, die Du nicht unbedingt brauchst, also secure, qos und reconnectTime. Verzichte für erste Versuche auf keepAlive. Setze dafür aber die clientID, damit Du auf mosquitto Seite im Protokoll nachschauen kannst, ob die Verbindung steht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

schnitzer
Beiträge: 38
Registriert: 29. Dez 2018 10:17

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von schnitzer »

Hallo Udo,
das transformationPattern hab ich rausgenommen. —- Nach wie vor Communication Error
Die genannten Parameter hab ich weggelassen. ——— Nach wie vor Communication Error
Frage: Wie und wo setze ich die ClientID??

Im log finde ich nach wie vor „java.lang.Exception: No MQTT client

Ferner ist mir noch folgendes aufgefallen. Wenn ich in der thing Datei den Channel auskommentiere und abspeichere. Steht der Channel immer noch in PaperUI. Erst nach reboot ist die Bridge online und der Channel ist in paperui verschwunden.
Ich habe auch noch einenSonoff Basic und Power in Betrieb. Die funktionieren mit der Einstellung des Brokers fehlerfrei.
Ich hab momentan nur ????? vor mir

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von udo1toni »

Die clientID ist ein Parameter der Bridge (so wie host, port, username, passwort usw.) Die clientID wird von openHAB automatisch generiert, falls keine gesetzt ist. Das hat aber den Nachteil, dass die clientID nach einem Neustart evtl. nicht mehr die selbe ist wie vor dem Neustart. Auswirkungen hat das keine, aber wenn man im Logfile von mosquitto die Kommunikation nachvollziehen will, ist eine selbst vergebene clientID hilfreich.

Wenn Du die Text Konfiguration über .things Dateien nutzt, musst Du in der Tat zumindest das addon neu starten (das geht über die karaf Konsole - ist schneller als openHAB neu zu starten). Das ist ein Bug, der hoffentlich bald behoben wird (allerdings ist ja momentan noch Umzug mit Nachwehen).

Dass Du auch andere mqtt Geräte nutzt, ist aber schon mal hilfreich, dann ist die Bridge ja offensichtlich ok. (Du nutzt dort sicher auch mqtt2!?!)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

schnitzer
Beiträge: 38
Registriert: 29. Dez 2018 10:17

Re: Wie Sonoff-RF-Bridge in .items anmelden

Beitrag von schnitzer »

Folgende Info:
Die ClientID steht bei mir in PaperUI. Sie wurde anscheinend automatisch vergeben. In der Bridgedefinition kann ich die ID nicht eingeben, da nur
numerische Werte zugelassen sind.
Meine komplette Thing Datei sieht folgendermaßen aus.

Code: Alles auswählen

//Sonoff Things
//-------------------------------------------------------
//Definition der Bridge

Bridge mqtt:broker:mosquitto "Mosquitto MQTT Broker" @ "MQTT" 
    [host="localhost",
    port=1883,
    //secure=false,
    //qos=0,
    //reconnectTime=60000,
    //keepAlive=30000,
    username="xxx",
    password="yyy"
    ]    
{
//------------------------------------------------------------
//Definition Thing für Sonoff RF 433 Bridge
    Thing topic Sonoff_Bridge1 "Sonoff_Bridge1" @ "MQTT" 
    
    {Channels:
      Type string : Bewegungsmelder "Bewegung erkannt" [ stateTopic="tele/sonoff_br1/RESULT" ] //transformationPattern="JSONPATH:$.RfReceived.Data"] 
    } 

//---------------------------------------------------------------    
//Definition der Things für den Sonoff P1
    Thing topic Sonoff_P1 "Sonoff_P1" @ "MQTT" 
    
    {Channels:
        Type switch : Sonoff_P1_Power  "Sonoff_P1_Schalter" [ stateTopic="stat/Sonoff_P1/POWER", commandTopic="cmnd/Sonoff_P1/POWER" ]
        Type number : Sonoff_P1_Energy "Sonoff_P1_aktVerbrauch"     [ stateTopic="tele/Sonoff_P1/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
    
    }//End der Definition für den Sonoff P!
//-----------------------------------------------------------


//Definition der Things für den Sonoff B1
    Thing topic Sonoff_B1 "Sonoff_B1" @ "MQTT"

    {Channels:
        Type switch : Sonoff_B1_Power "Sonoff_B1_Schalter"   [stateTopic="stat/Sonoff_B1/POWER", commandTopic="cmnd/Sonoff_B1/POWER" ]
    }//Ende der Definition für den Sonoff B1
Der Sonoff pow und der Sonoff Basic funktionieren einwandfrei.
Wenn ich dann den Channel für die RF Bridge eingebe, wie im file oben geschehen, zeigt mir das Logfile folgendes an:

Code: Alles auswählen

2019-04-09 08:09:32.018 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from ONLINE to OFFLINE
2019-04-09 08:09:32.028 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:Sonoff_Bridge1' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)
2019-04-09 08:09:32.038 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:Sonoff_B1' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)
2019-04-09 08:09:32.046 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from ONLINE to OFFLINE
2019-04-09 08:09:32.059 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:Sonoff_P1' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)
2019-04-09 08:09:32.070 [me.event.ThingUpdatedEvent] - Thing 'mqtt:broker:mosquitto' has been updated.
2019-04-09 08:09:32.085 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from OFFLINE to ONLINE
2019-04-09 08:09:32.091 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:Sonoff_P1' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
2019-04-09 08:09:32.097 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:Sonoff_Bridge1' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
2019-04-09 08:09:32.102 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:Sonoff_B1' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
2019-04-09 08:09:32.106 [me.event.ThingUpdatedEvent] - Thing 'mqtt:broker:mosquitto' has been updated.
2019-04-09 08:09:32.116 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:Sonoff_Bridge1' changed from OFFLINE (BRIDGE_OFFLINE) to OFFLINE (COMMUNICATION_ERROR): java.lang.Exception:
No MQTT client
2019-04-09 08:09:32.125 [me.event.ThingUpdatedEvent] - Thing 'mqtt:topic:mosquitto:Sonoff_Bridge1' has been updated.
Im mosquitto Logfile sehe ich:

Code: Alles auswählen

1554789993: Client paho468887072298 disconnected.
1554789993: New connection from 127.0.0.1 on port 1883.
An dieser Stelle stehe ich und komme nicht weiter. Vielleicht helfen dir für das weitere Vorgehen die Logfiles

Antworten