Beiträge von JoergZ

    Kennt jemand eine Möglichkeit alle 4 Kanäle gleichzeitig schalten - ich meine tatsächlich gleichzeitig, so als würde ich mehrere Geräte mit demselben Grouptopic ansprechen. Diese schalten nämlich ohne spürbare Verzögerung. Eine Rule schaltet mit deutlicher Verzögerung die Kanäle nacheinander durch, auch ein (Bash-) Skript mit 4 MQTT-Befehlen ist zwar schneller aber doch deutlich nacheinander. Ich suche also so etwas wie ein Grouptopic für alle 4 Kanäle .

    Die Tasmota-Geräte können nur mit einem MQTT-Broker kommunizieren, aber mehrere Broker können untereinander kommunizieren und die Messages über Netzwerkgrenzen hinweg (MQTT Bridge) austauschen.

    Setze ich die idx auf meinen Temp-idx (LaCrosse TX3) und trage bei svalue = $TMPN ein passiert nichts. Bei svalue="88,88" wird der WEert ausgegeben. lOffensichtlich muß ein numerischer Wert rein, oder ?

    Bash ist nicht besonders gut in der Typerkennung von Variablen. Vermutlich wird $TMPN als String interpretiert. Schau dir mal die Methoden printf oder expr. Damit kann man den Typ festlegen (%d) (Gute Informationen zu bash und printf: https://openbook.rheinwerk-ver…Kap00700104004E721F034268)

    Hatte ich übersehen. Auf der Domticz Seite wird die Übertragung eines Messwertes per MQTT so dokumentiert:

    Code
    Then publish a temperature measurement to the virtual sensor idx noted above (example idx 1) like:
    mosquitto_pub -h localhost -m '{ "idx" : 1, "nvalue" : 0, "svalue" : "25.0" }' -t 'domoticz/in'

    Es hängt allerdings auch vom Sensor ab. Für einen DHT11 (auch bei einem SI7021) Sensor sieht der JSON-Ausdruck bei mir so aus:

    Code
    mosquitto_pub -h 192.168.178.20 -m '{ "idx" : 2, "nvalue" : 0, "svalue" : "25.0;70.00;3" }' -t 'domoticz/in'

    Also svalue muss gefüllt werden mit Temperatur (25.0), Luftfeuchtigkeit (70.00). Der dritte Wert (3) sorgt für die Anzeige "Nass". Die Werte können zwischen 0 und 3 liegen. Es hängt also auch vom Sensortyp (in Domoticz) ab, welche Werte übermittelt werden (müssen). Fehlende Werte führen u. U. zu Null-Anzeigen.

    Und mafrei noch mehr als ich. Vielleicht schaut er auch mit rein. Ich mache eher direkt in MQTT und Python- und Bash-Scripten. Du musst in Domoticz auf jeden Fall einen virtuellen Sensor eingeben, damit du eine IDX-Nummer hast. Von welchem Typ der Sensor sein muss, wird man vermutlich experimentell herauskriegen müssen. Dann wird es wohl am besten klappen, wenn der Raspi die Werte über die HTTP-Schnittstelle von Domoticz schickt z. B. mit dem Programm curl. Eine Dokumentation zum API findest du hier. Ein paar Infos, wie man mit curl Nachrichten an den Domoticz-Server sendest, findest du hier: RE: Nachricht von NodeMCU an Domoticz senden wobei in dem Beispielcode XXX die IP des Domoticz-Servers ist und Y die IDX des vitrtuellen Sensors.

    Die HTTP requests habe ich jetzt auch kapiert, wusste bisher nie was mit den %20 anzufangen.
    Wer sagt einem auch, dass das nur der Platzhalter für ein Leerzeichen in HEX-Format ist. ;-))

    Manche Browser (z. B. Firefox) ersetzen eine eingegeben Leerstellen von sich aus bei der Übertragung durch %20. Diese Formatierung (Maskierung, Escapen) von Leer- und anderen Zeichen (Enter, Tabulator, Slash, Backslash usw.) braucht man auch gelegentlich bei Terminalanwendungen. Normalerweise trennt die Leerstelle Befehle von Parametern oder Dateinamen. Wenn die Leerstelle zum Befehlsausdruck gehört, muss sie maskiert werden.

    Had a look at your app. Very fast but founds only a part of my devices. My network has several access points but it's one network logically (no subnets). All devices which are connected by access points are not found.

    DejaWuest Oh danke! Das habe ich nicht gewusst. Coole Funktion. Aber die Frage von reitpe war ja

    Ist es möglich den Sonoff Basic R2 auch zu schalten, wenn dieser offline (stromlos) ist?

    Das geht nun mal immer noch nicht. Erst wenn er wieder Strom hat und sich mit dem WLAN und sich mit MQTT (oder der Cloud) verbunden hat oder mit HTTP ansprechbar ist, kann wieder was gemacht werden. Es wird zwar ein Auftrag gespeichert, aber zur Ausführung kommt er erst, wenn der Sonoff wieder Saft hat. Genug der Haarspalterei - ich danke sehr für diesen Hinweis. Wer wissen will wie man es macht:

    mosquitto_pub -h BROKER-IP -r -t TOPIC -m MESSAGE


    PS: Der eventuell unangenehmen Nebeneffekt: Wenn ich das nicht lösche, veranlasst der Broker nach jedem erneutem Verbindungsversuch immer die hinterlegte Aktion. Kann doof werden, wenn man ein wackliges WLAN hat... Aufhebung mit:

    mosquitto_pub -h BROKER-IP -n-d-r -t TOPIC

    Hallo, mit MQTT und RETAIN ist das möglich,

    Das würde mich sehr wundern! Stromlos heißt, kein Strom für die Firmware. Keine Firmware - keine Funktionen. Beeinflussen kann man allenfalls, wie der Sonoff sich verhält, wenn er wieder Strom bekommt und man kann Rules anlegen, die irgendwas machen, wenn das System bootet. Aber das etwas am Sonoff passiert, wenn der Sonoff gar keinen Strom hat, kannste vergessen. D. h. nicht, dass eine Software, die mit dem Sonoff in Kontakt steht, nicht merken würde, wenn der Sonoff weg ist (z. B. der MQTT-Broker über die LWT-Meldung - last will and testament). Diese Software kann dann reagieren und was machen, z. B. einen Alarm auslösen. Aber der Sonoff ist ohne Strom mausetot.

    Mit deiner Rule sendest du - wenn es denn ginge (d. h. von GeigerSensor empfangen werden kann) an den sensor einen Wert Ich glaube, das ist nicht dein Ziel. Beschreibe doch mal mit ganz normaler Alltagssprache, was mit dem Wert von var1 passieren soll.

    aus dem Cookbook:

    Zitat
    Code
    ON Time#Minute DO Backlog publish shed/tele/maxdb %var1%; var1 0 ENDON

    Ich denke Folgendes:

    a) Ersetze %Topic% durch das tatsächliche Topic des angesprochenen Gerätes, das %....% ist ein Stellvertretername wie foo und bar. Setze also unter Einstellungen -> MQTT konfigurieren -> Topic bei dem Zielgerät einen "richtigen" Namen ein wie Steckdose_1 oder Lampe_Stube oder was auch immer (keine Leerzeichen, keine deutschen Umlaute)


    b) benutze das richtige Prefix, wenn du was irgendwo was ausführen willst, dann ist das immer cmnd (= command), dann das Topic des Gerätes, dann Aktionstopic (z. B. power, timer, status usw.) und dann


    c) die payload (message) und kein JSON-Ausdruck übertragen sondern nur als einzelner Wert (= die Variable , in der der der Wert steckt). Das heißt im MQTT-Jargon dann payload oder message


    Es sollte dann ventuelle eher so aussehen (falls ein anderes Gerät eingeschaltet werden soll und in var1 1 oder 0 steht):

    rule1 on Time#Minute do backlog add1 counter1; publish cmnd/Echter_Name/Power %var1%; counter1 0 endon .

    Wenn nur eine Datei im Verzeichnis ist, können bestimmte Probleme eben nicht auftreten, das scheint mir ziemlich logisch. Nur wenn man mehrere Dateien hat, mus ich die Dateinamen identifizieren können. Ab da wird es eben etwas komplizierter.

    Ich weiß zwar nicht von wo aus und mit was (Tastatureingaben, nodered, python, bash ...) du auf die Dateien zugreifst, aber es hört sich nach einem Datentyp Problem an.Dateinamen sind, auch wenn sie aus Zahlen bestehen, Buchstaben (sehen nur aus wie Zahlen). Mit Buchstaben kann man nicht rechnen. Also erst das Schriftbild einer Zahl (z. B. 0001) in eine Zahl wandeln (1), dann eine 1 dazu addieren (1 +1 = 2), das ganze wieder in den Buchstaben "2" wandeln und noch drei Nullen "000"als Buchstaben davor schreiben. In Python sehe das so aus:

    Code
    zahl = eval('0001') # so entsteht eine Variable vom Typ int
    zahl = zahl + 1 # jetzt ist in zahl der Wert 2
    zahl = str(zahl) # jetzt mache ich wieder einen Text daraus "2"
    zahl = '000' + zahl # jetzt ergänze ich drei Nullen "0002"

    Das Beispiel oben beschäftigt sich nicht mit dem Problem, dass der Name immer 4 Zeichen lange sein muss. Das kann man aber auch lösen. Wie gesagt, ich weiß nicht, wodurch die Berechnung und die Ausgabe erstellt wird.