Jede Hausautomatisierungssoftware (IOBroker, Homeassistent, Domoticz, etc.) kann so etwas. Eigenes Skript schreiben, wenn es nur um dieses einzelne Gerät geht, geht auch.
Beiträge von JoergZ
-
-
Nicht dass ich wüsste. Da musst du dir selbst eine Lösung mit irgend einer Programmiersprache basteln.
-
Klar geht das:
http://192.168.2.60/cm?cmnd=status%208. Im Firefox wird es dir dann als recht gut aufbereitetes JSON angezeigt. Weiß aber nicht, wie das mit Edge oder anderen Browsern aussieht.
-
sondern meine feste, vom Provider zugeteilte IP:Port (Port der im Router freigegeben ist)? Und der Router leitet automatisch auf den Pi mit der IP im Netz (192.....)?
Müsste so funktionieren (habe ich allerdings selbst noch nie angewendet )
-
Error: Wind: Invalid/Unhandled data received! (Topic: domoticz/in, Message: 9.48)
Es scheint ja was gesendet zu werden. Was sagt denn die Tasmota-Konsole dazu? Kopier doch da mal die Sensormeldung (müsste über die Eingane status 8 abrufbar sein) bzw. den Strinmg, der an Domoticz gesendet wird.
-
den Windmesser mit diesen Script
In Domoticz Protokoll kommen die Werte an.
Kannst du mal den Inhalt von "Script" und "Protokoll" - also die relevanten Abschnitte - posten. Das könnte bei der Lösungssuche helfen.
EDIT: Wenn mit Script das Script von premo gemient ist, brauchst du das nicht zu posten.
-
Vielleicht zum Einstieg mein Versuch MQTT zu erklären (oder andere Quellen im Internet suchen):
Um mit MQTT-Nachrichten zu arbeiten, gibt es viele Optionen. Du wirts nicht umhin kommen, dich in irgendetwas mehr einzuarbeiten: Sei es eine Heimautomatisierung wie Domoticz, IOBroker, HomeAssistant, FHEM und und und... oder in eine Programmiersprache wie Java(Script), Python, C irgendwas (letzteres wohl kaum ) . Dann findest du die entsprechenden Tools (Bibliotheken) und Beispiele, wie bestimmte Aufgaben gelöst werden können.
Dabei wirst du dich mit dem Format von MQTT-Nachrichten beschäftigen müssen: JSON Auch dazu habe ich mich in dem Wiki auf dieser Plattform verewigt: hier. Ich hoffe das hilft die schon mal ein bisschen weiter.
-
Wenn ich dein Thema richtig verstehe, kannst du entweder einen MQTT-Server im Internet betreiben, auf den sowohl das Gerät im "fremden" WLAN als auch dein Raspi/Domozicz jeweils als Clients zugreifen.
Die andere Version ist der Betrieb von mosquitto auf deinem Raspberry Pi. Dann muss der Pi von außen erreichbar sein, das heißt zum einen ein Port in deinem Router muss frei geschaltet werden, um auf den MQTT-Port am Raspi zu kommen und zum anderen braucht dann entweder der Router eine feste IP oder du musst zusätzlich einen DynDS-Service benutzen, mit einer Pseudo-Domain im Internet, von der immer auf deinen Router umgeleitet wird, der ja in der Regel eine dynamische IP hat. (Man kann zwar irgendwie IPV6 in Tasmota reinfriemeln, aber einfach ist das nicht.) Wenn du in deinem Router einen Port freischaltest, nimm nicht den 1881. Das wäre für Angreifer zu einfach.
Zur Variante 1 in meinem Beitrag: Eventuell gibt es Dienstleister im Internet, die MQTT-Server zur Verfügung stellen umsonst oder für kleines Geld. Musst du mal recherchieren.
In allen Fällen - weil es immer über das Internet geht - ist es dringend geboten, mit verschlüsselten Daten zu arbeiten. Das MQTT-Protokoll erlaubt TLS-Verschlüsselung.
Zu http/https: Wenn dann ist nur https eine Option und dazu braucht die Hardware m. W. einen ESP32. Der ESP8266 kann das nicht.
-
Unter Linux muss das Paket mosquitto-clients installiert sein. Für Windows findest du hier was https://mqtt.org/software/ unter dem Punkt Software -> Desktop-Tools. Weitere Informationen in meinem Wiki-Beitrag: MQTT - Eine Einführung. Vom Funktionsprinzip geht es so: Du schickst eine Nachricht an den MQTT-Broker. Die Nachricht besteht aus einem Topic (Gerät bzw. Dienst) und einer Message (Payload). Das kann ein einfaches Befehlswort sein wie "on" oder "off" oder ein JSON-Ausdruck wie "{key: value1, key2 : value2}". Um einen einzelnen Timer zu setzen, überträgst du einen Json Ausdruck wie
{"Timer1":{"Enable":1,"Mode":0,"Time":"20:00","Window":0,"Days":"1111111","Repeat":1,"Output":1,"Action":1}}. Der MQTT-Broker schickt es dann weiter an das Gerät bzw. den Dienst auf dem Gerät.
Denke daran, dass es das Topic Timers gibt, mit dem du alle Timer in einem Rutsch definieren kannst inklusive der Angabe, ob denn die Timer-Funktion überhaupt aktiviert werden soll und die Topics timer1 bis timer16, mit denen du einen einzelnen Timer beeinflusst, aber nicht die Grundfunktion. Schau es dir einfach in der Tasmota-Konsole an, welchen Output du bekommst, wenn du timers bzw. timer1 eingibst.
-
Ich arbeite nicht mit FHEM und habe mir nur ein paar Bilder von FTUI3 angeschaut. Unwahrscheinlich, dass die Timersteuerung von Tasmota darin integriert ist. Du kennst die Webansicht für die Konfiguration der Timer? Da ist schon eine Menge einzustellen. Was auf jeden Fall geht, ist eine Timer-Definition per MQTT zu übertragen. Vielleicht ist es ja auch möglich in FTUI3 sich Webseiten anzeigen zu lassen. Dann könntest du das WebGUI von Tasmota aufrufen. Wäre zwar nicht elegant aber machbar ;-).
-
Du wirst bestimmt Hilfe bekommen, wenn die Rulesspezialisten sehen, dass du dich wenigstens ein bisschen angestrengt hast und deine nicht zum Erfolg führenden Regeln hier postest. Wir verstehen uns als Hilfe zur Selbsthilfe. Das Wort Rules ist ein Link, der dir schon mal mit einfachen Beispielen (auf deutsch) weiterhilft. Ich bin nicht der Rulesspezialist, aber soweit ich das überblicke ist die Aufgabe durchaus lösbar.
-
HoerMirAuf Offensichtlich bin ich nicht mehr auf dem Laufenden... Dank für die Korrektur.
-
Wenn ich nicht ganz falsch liege (andere kennen sich mit Shelly besser aus) kann ein Shelly auch nur senden (MQTT publish oder (HTTP) websend) aber nicht empfangen oder abfragen (subscribe), es sei denn, das Gerät ist direkt hardwaremäßig am Shelly via GPIO angeschlossen. Dein Ziel lässt sich m. E. nur mit einem MQTT-Broker und Skripten (oder einer Hausautomationssoftware) auf einem weiteren Gerät z. B. einem Raspberry Pi erledigen
-
-
Weiß jemand, ob diese Dosen irgendwie Tasmota flashbar sind:
Tapo WLAN-Steckdose TP-LINK P100, 4 StückDie WLAN-Steckdose Tapo P100 von TP-Link steuert Ihre Smart Home Geräte fern und schaltet sie automatisch entsprechend Ihrer Programmierung an und aus. Egal ob…www.pollin.de -
Hhm... das scheint ein Fall für HoerMirAuf zu sein. Du kannst folgendes versuchen. (Hinweis: Das ist ein ganz übler Hack, weil er nicht mit Logik arbeitet sondern mit Zeitsteuerung). Unsicher dabei ist, wie oft der Schalter tatsächlich schaltet und evt. endet es auch in einer Endlosschleife, weil das Timing nicht passt, weil das erste delay zu lang oder es wird nur einmal geschaltet, weil das erste delay zu kurz ist. Bitte immer nur in einer-Schritten ändern.
setoption34 0
rule1 on Power1#state=1 do backlog Power1 3 ; BlinkTime 4; BlinkCount 2; delay 7; rule1 0; power1 0; delay 20; rule1 1; endon
Zur Erklärung:
setoption34 0 setzt die Standardverzögerungszeit bei Backlog-Befehlen von 200 ms auf 0
das erste delay (delay 7) verzögert die folgenden Befehle um 0,7 Sekunden, damit das Relais zweimal schalten kann. Bei mir hat es bei 6 nur einmal geschaltet und bei 8 ist die rule in die Endlosschleife gekommen, weil die Deaktivierung (rule1 0) zu spät kommt. Nach zwei Sekunden wird die rule wieder aktiviert. Wie gesagt, ausprobieren oder warten bis premo oder HoerMirAuf eine bessere Idee haben. (Dann lerne ich auch wieder was.)
-
Auch diese Eingabe in der Konsole brachte nicht den gewünschten Erfolg.
Heißt was genau? Was passiert, was passiert nicht? Sind Schaltvorgänge zu hören? Und wie premo schon schrieb, was sagt die Konsole?
-
bei mir funktioniert das:
rule1 on Button1#state do backlog Power1 3; BlinkTime 4; BlinkCount 2; endon
Die Regel auch aktiviert mit
rule1 1 ?
-
ruediger Geht natürlich auch. Falls du sowieso mit MQTT arbeitest, solltest du dir paho-mqtt mal anschauen. Da hast du gleich die Möglichkeit am MQTT-Broker permanent zu lauschen und Ereignisse, sobald sie eintreffen, weiterzuverarbeiten
-
Ein bisschen dich einarbeiten, musst du schon. Wir helfen gerne, aber verstehen es als Hilfe zur Selbsthilfe und - wie gesagt - ich kann eigentlich kein Javascript (aber die Programmierprinzipien sind zwischen manchen Sprachen doch sehr ähnlich.). Versuche es noch mal mit dieser Anleitung und vergleiche dabei die Namen aus der ganz oben stehenden ersten Zeile mit den Bezeichnungen, die später in der Funktion auftauchen. Dann kannst du verstehen, wie aus einem langen mit unterschiedlichen Klammern verschachteltem Ausdruck plötzlich ein in seine Einzelteile zerlegtes Objekt wird, bei dem man jedes einzelne Teil weiterverarbeiten. kann :
JSON ParsenIm folgenden Script zeige ich Dir, wie ich eine JSON-Zeichenfolge parse. Folgende Zeichenfolge dient hier als Beispiel: {"name":"SensorOutdoor1",…www.smarthome-tricks.deSpannend ist der Teil unter Try. Dort kannst du das Prinzip erkennen:
- Aus dem input (erste Zeile ganz oben) zunächst ein Javascript-JSON Objekt machen objekt = JSON.parse(input) (in objekt steckt nun der Inhalt aus input aber in einer anderen Form, nämlich als Array)
- Das Objekt ist nun in seinen Teilelementen nutzbar: objekt.name hat den Inhalt "SensorOutdoor1", objekt.temp hat den Inhalt 4.5
Ein bisschen tricky wird es an der Stelle, wo der Inhalt eines objekt.unterobjekt wiederum nicht ein einfacher String oder eine Zahl ist, sondern selbst wieder ein (assoziatives) Array, auf das man man dann mit objekt.unterobjekt.name oder objekt.unterobjekt[1] usw. zugreifen musst.
Vielleicht hilft dir mein Beitrag aus dem Wiki, wo ich am Beispiel von jq versuche zu erklären, wie ein JSON-Ausdruck zerlegt wird. jg ist im Prinzip dasselbe wie JSON.parse() nur als eigenes Programm.