Gerne.
Mit Berry kann ich leider nicht helfen, sorry.
Hab mich damit noch nicht auseinander gesetzt, da ich bisher alles was ich brauchte auch mit Rules lösen konnte.
Gerne.
Mit Berry kann ich leider nicht helfen, sorry.
Hab mich damit noch nicht auseinander gesetzt, da ich bisher alles was ich brauchte auch mit Rules lösen konnte.
Moin
Was muss den hier ? angegeben werden damit ich auf dem alten Release 13.3. den Compiler laufen lassen kann ?
Im gitpod oben links neben dem Benutzernamen auf "Workspaces", dann auf "new Workspaces" und wenn du da die github URL vom 13.3. release reinkopierts, dannklappt es
Wow, hab's rausgefunden. Mit:
Cool !! Wieder was gelernt. Eckige Klammer .... ja klar, Array! Da bin ich nicht drauf gekommen.
Moin ..
mit Friendlyname mag es bei mir nicht klappen, da bleibt der Value leer (evtl weil der Friendlyname in Klammern ausgegeben wird) aber wenn Devicename auch geht?
Was genau soll die rule den machen ?
Der Syntax ist etwas durcheinander, da kein on - do - endon
meinst du sowas?
on var1#state=1 do backlog timer1 {"enable":1}; timer2 {"enable":1}; timer3 {"enable":0} ... endon
Hi.
Aktuell habe ich noch keine Idee wie ich einzelne Timer (z.B. Relais1 Timer1-10, und Relais Timer11-16) "enable" schalten könnte!
meinst du das?
Du kannst ganze Timer Parametrieren und auch aktivieren per konosle und damit auch per rule websend etc.:
Timer1 {"Enable":1,"Time":"02:23","Window":0,"Days":"--TW--S","Repeat":1,"Output":1,"Action":1}
es geht auch:
Timer1 {"Enable":0} bzw. Timer1 {"Enable":1}
Hi
ne du ...
In so einem Ruleset ... also Rule1 ist genau genommen das Rule-Set 1, werden die Rules zeilenweise abgearbeitet.
In der ersten rule (eine rule beginnt mit on und endet mit endon) wird der Power Wert in die variable 1 (var1) eingelesen.
Der Trigger ist eben tele-energy#power der die Rule auslöst und der Triggerwert ist immer in der jeweiligen variable %value% enthalten.
Die Zweite rule wird durch tele-bme280#temperatur gertriggert (ich hab halt BME280 am laufen deshalb hab ich den Trigger für die Temp als Beispiel genommen) und zusammen mit dem Inhalt der in der ersten rule in var1 geschrieben wurde an die URL übermittelt.
Gerne.
Du kannst natürlich jeden JSON Wert der in der Teleperiod aufgeführt wird parsen und senden.
Bsp.:
rule1
on tele-energy#power do websend [<url>]/MyLandingPage.php?LogEnergy=%value% endon
on tele-bme280#temperature do websend [<url>]/MyLandingPage.php?LogTemp=%value% endon
Soll es in einem Webrequest gesendet und auf dem Server geparst werden, würde ich so ansetzen:
rule1
on tele-energy#power do var1 %value% endon
on tele-bme280#temperature do websend [<url>]/MyLandingPage.php?LogPower=%var1%&LogTemp=%value% endon
P.S. Gibt es eigentlich ein Tutorial zur Tasmota-Programmierung? Oder habt ihr euer Wissen allein aus dem abstrakten Handbuch, das es auf Github gibt?
Ich kenn nur das auf Github. Vor Jahren hatten wir hier den Versuch das Ganze ins deutsch zu übersetzen aber Tasmota hat sich so rasant weiterentwickelt, das es einfach zu aufwendig ist das aktuell zu pflegen und ob es das dann verständlicher macht sei dahin gestellt.
Das Forum hier ist, denke ich ein sehr guter Ansatz sich mit Fragen in das Rule bzw. Script Thema einzuarbeiten
Ist eben learning by doing ... mit der Zeit kommt man dahinter wie das Ganze funktioniert ....
Moin.
kommt jetzt darauf an wie genau das JSON mit Deinem Energywert ausschaut.
Prinzipiell wird das so gemacht:
rule1 on tele-energy#power do websend [<url>]/MyLandingPage.php?LogEnergy=%value% endon
rule1 1
Jetzt wird der wert bei jeder teleperiod übertragen ... teleperiod ist standart auf 300 gesetzt (5 Minuten)
Moin.
Wenn ich mich richtig erinnere entspricht bei "Protocol:UNKNOWN" der Hash - Tag den empfangenen IR-Daten
Auswertung z.B. über Rules:
on irreceived#hash=0x0F25B3DA do <etwas> endon
da bin ich mir nicht sicher ob es nicht doch:on irreceived#data= ist
Moin.
das lässt sich recht einfach umsetzen:
einen Timer (Timer1) erstellen für Sonnenuntergang und als Aktion "Regel"
dasselbe (Timer2) für Sonnenuntergang + 1h
In der Konsole dann die Rule:
rule1
on clock#timer=1 do shutterposition1 50 endon
on clock#timer=2 do shutterposition1 100 endon
rule aktivieren:
rule1 1
Moin.
was sagt den der Konsolen Output? Ist die Rule aktiviert? Am besten hier posten.
rule1 1
Du hast also 230V Dauerspannung an der Decke.
bindet sich ins WLAN ein, damit über APP und Sprachsteuerung ansteuerbar oder als Slave auch von einem anderen Shelly
Geht natürlich auch mit nem 433Mhz Sonoff Teil aber dann halt ohne dimmen.
EDIT:
was meinst du mit verbinden? Einen Shelly der vom 433MHZ Sonoff angesteuert wird? In der Theorie schon aber ich glaub nicht das das mit dimmen sauber geht. denn dimmen hängt ja davon ab wie lange dann der Schließer geschlossen ist und damit den Shelly dimmt. Das wirst in der Praxis nie genau hinbekommen. Ob das von einem anderen Shelly aus besser zu steuern ist, kann ich nicht sagen.
Allerdings hat der Shelly Dimmer sowas wie ne Nachtfunktion, ließ mal die Beschreibung auf der Shelly Seite durch.
Evtl. reicht es ja einfach nur zu schalten und Nachts wird weniger hell eingeschaltet. Was da die Original Shelly Firmware kann, kann ich auch nicht sagen.
was meinst du mit FUNK?
Der lässt sich vor Ort mit Tasten bedienen, bindet sich ins WLAN ein, damit über APP und Sprachsteuerung ansteuerbar oder als Slave auch von einem anderen Shelly ... SMART eben.
Hi.
spricht was gegen den Shelly Dimmer? Mit der Shelly Cloud auch mit Google Assistant einsetzbar.
Ah, Danke!
Hmmm .... ich glaub, da würde ich tatsächlich lieber ne HTML Seite ins Tasmota WebIF reinmodden.
Hier schon mal beschreiben:
Dazu im Gitpod Master Release (siehe Signatur) einfach in der Datei:
xdrv_01_9_webserver.ino ein paar Zeilen ergänzen:
z.B.:
Bei Zeile 570:
{ "xx", HTTP_ANY, HandleOwnSide },
Und dann bei ab Zeile 3216 folendes einfügen:
void HandleOwnSide(void)
{
if (!HttpCheckPriviledgedAccess()) { return; }
WSContentSend_P(PSTR("<html><head><title>Get Fetch-Request</title></head><body>"));
WSContentSend_P(PSTR("<script language='JavaScript'>"));
WSContentSend_P(PSTR("function TogglePower(){ fetch('http://"));
WSContentSend_P(PSTR("%_I"), (uint32_t)WiFi.localIP());
WSContentSend_P(PSTR("/cm?cmnd=power toggle').then(function(response) {"));
WSContentSend_P(PSTR("response.text().then(function(text) {"));
WSContentSend_P(PSTR("const Status = JSON.parse(text);"));
WSContentSend_P(PSTR("document.getElementById('PowerValue').innerHTML = Status.POWER;"));
WSContentSend_P(PSTR("});"));
WSContentSend_P(PSTR("});"));
WSContentSend_P(PSTR("};"));
WSContentSend_P(PSTR("</script>"));
WSContentSend_P(PSTR("<table><tr><td><input type='button' value='Toggle Power' onclick=TogglePower()></input></td><td id='PowerValue'></td></tr></table>"));
WSContentSend_P(PSTR("</body></html>"));
WSContentStop();
}
Alles anzeigen
Und man hat seine "fetch-Seite" auf Tasmota mit dem Aufruf http://<IP>/xx
Aber ... macht das Sinn? Wenn ich eh schon auf dem Tasmota Device bin, kann ich die Daten ja auch direkt ablesen .... warum also dann das gefetche? und extern geht's eben nur mir CORS
Das Problem bei der Lösung von karoCB ist, das das scheinbar nur auf nem ESP32 läuft weil auch noch ein kleiner HTTP Server erzeugt werden muss. Bei nem ESP8266 mit ufs wird das File nur zum download angeboten aber nicht aufgerufen.
(Falls das doch geht, bitte korrigiert mich)
Alternativ, könnte man seine Webseite auch ins Tasmota WebUI mit hinein-modden.
Aber einfacher ist es dann wohl doch mit Cors und man hat die Option es von überall aus aufzurufen.
Cors ( verschiedene Server zulassen ) habe ich auch nicht aktiv und es geht dennoch, da die HTML- Seite zum Start auf dem ufs- Filesystem des auszuwertenden Tasmota liegt
Stimmt.
Ebenfalls danke für den Tipp! Wenn man die Seite auf den Tasmota-Device selbst speichert wird Cors nicht benötigt.
Auch ein gute Lösung.
Moin.
Die html-Seite von HoerMirAuf muss auf einem Webserver liegen
Die darf auch auf einem Rechner lokal gespeichert sein. Hosten auf nem Server ist nicht nötig.
Ansonsten wie die Vorredner sagten:
CORS muss mit einkompiliert sein.