Aktuell sind viele Themen im Umbruch aufgrund Umstellung auf Core3, so wurde mit [13.4.1.1] 20240418 der "Support for ESP32 Arduino Core 2 (#21180)" entfernt. Möglicherweise hier ein Zusammenhang, keine Ahnung. Ich habe aktuell ein Thema mit I2S welches auch derzeit nicht funktioniert mit Core3.
Beiträge von dcx
-
-
Vielen Dank! Ich wünschte ich wäre selber drauf gekommen. Habe ein paar Stunden rumgebastelt,
aber Rule1+2 zu benutzen ist mir nicht in den Sinn gekommen.
Die KI (CoPilot) spuckt teilweise auch korrekte Skripte aus, aber das mit dem Timer konnte sie nicht.Letzte Frage: kannst Du das auch in Berry abbilden?
-
Folgendes Script funktioniert einwandfrei um nach Abhängigkeit der Umgebungshelligkeit die Displayhelligkeit (LED-Matrix Display) zu steuern.
Allerdings wird bei jeder kleinen Änderung von Illuminance neu getriggert, was die Console recht schnell füllt.
Ich würde gerne Ressourcen schonen und nur alle 30 Sekunden die Abfrage machen. Geht das? -
Jetzt habe ich einen ESP32 mit normaler Firmware, also nur Berry-Script.
Wie kann ich das negieren eines Wertes damit abbilden?
-
Bei mir funktioniert es schon lange zuverlässig so:
Den Datenpunkt "so9 pwr" habe ich vorher manuell angelegt.
Sicherlich geht's aber auch mit jsonata.
Noch eleganter wäre es natürlich wenn es direkt auf dem Tasmota-Gerät gehen würde, da bin ich aber raus.
-
Tasmota Globale Variablen + Script kann hier sicherlich helfen.
Muss man nur reinkompilieren.
-
Rules sind bekannt, ich möchte aber einen Einstieg in Berry bekommen weil ich da großes Potential sehe.
Mit Tasmota-Script habe ich auch schon gearbeitet, das muss man aber immer extra reinkompilieren.
Das genannte Problem kann ich auch z.B. mittels ioBroker Blocky-Script lösen, ist aber gerade nicht das Ziel.
-
Ich möchte auf einem Sonoff Dual R3 gerne den zweiten Ausgang mittels Berry-Script schalten.
Den Befehl dazu habe ich bereits herausgefunden: tasmota.set_power(1, true)
Bedingung soll sein, das die gemessene Leistung länger als 20 Sek. über 600W liegt.
Es reicht den Wert alle 20-30 Sekunden abzufragen.
Fällt die Leistung für >60 Sek. wieder unter 600W soll der Ausgang abgeschaltet werden.
Leider komme ich mit dieser Script-Sprache bisher noch nicht klar und könnte etwas Starthilfe gebrauchen,
habe bisher auch keine anwendbaren Beispiele gefunden.
Auch liefert "energy.active_power" stets nur "0" zurück, kann man auch wenig mit anfangen.
-
ESP8266 und WLED drauf. Et voila!
-
Wenn Du es baust wird er kommen
Spaß beiseite, nimm ioBroker oder HomeAssistant und erstelle ein Script. Et voila!
-
oh super - da kann sicherlich gut ein DB18B20 verbaut werden ohne das eine Wärmerückkopplung von der CPU zu befürchten ist.
Bei Geräten mit Leistungsmessung liegen oft 230V gegen Erde an den GPIOs, daher sind auch in den Templates des Gosund SP1 keine GPIOs definiert (der hier genannte BlitzWolf ist baugleich).
-
Sonoff DUAL R3 v2
-
Flashe erstmal die aktuelle tasmota_sensors.bin
Mit RX und TX machste nix falsch erstmal. GPIO0 könnte Probleme geben.
-
Was spricht denn dagegen den Shelly mit Tasmota zu flashen?
Warum würde man den überhaupt mit der Original-FW betreiben wollen?
-
Workaround: globale Variablen nutzen, m.Mn. nach sowieso die elegantere Methode.
-
Da bei PV ja nur Einspeisung erfolgt hast Du dort stets das negative Vorzeichen.
Ich habe ebenfalls den Dual R3 v2 mit Tasmota 12 zur Leistungsmessung an der PV,
wenn Du Dir eine eigene Firmware mit Script-Unterstützung kompilierst (siehe hier) kannst Du meine Lösung anwenden.
Code
Alles anzeigen>D g:power_pos=0 ;wert wird im netzwerk als globale variable veröffentlicht (udp multicast) power_neg=0 >T power_neg=ENERGY#Power >S power_pos=power_neg*-1 ;invertierung durch multiplikation mit -1 >W PV Leistung {m}%0power_pos% W
Hier wird der positiv gewandelte Wert zusätzlich als globale Variable im LAN kommuniziert (via UDP Multicast).
Ich habe noch weitere Geräte an denen Displays hängen, so sehe ich immer direkt was gerade "geerntet" wird.
-
Super, vielen lieben Dank! Hab es direkt eingebaut.
-
Ich möchte meine LED-Displays zum Abend hin dimmen und morgens wieder heller einstellen, möglicherweise gekoppelt an die Astro-Funktion (Sunrise, Sunset).
Wie realisiert man eine Befehlsausführung am besten? Gibt es im Scriptinterpreter so etwas wie einen CronJob?
-
Solange nicht 2 oder mehr Geräte die gleiche Variable beschicken kannst Du das machen wie Du willst.
Andere Geräte können anders benannte Variablen beschreiben die Du dann wiederum gegenseitig auslesen kannst.
-
Nun funktioniert es, sowohl WebSend/WebQuery als auch die GlobVars. Dickes Dankeschön an die Experten hier und danke für Eure Geduld mit mir, das Thema ist doch etwas kompliziert und es hat ein paar Tage gedauert bis ich dahinter gestiegen bin
Falls noch jemand das umsetzen möchte, hier zusammenfassend nochmal wie ich es gelöst habe:
- Aktuelle Development-Firmware v11.1.0.4 mit TasmoCompiler erstellt, Haken bei "Script" gesetzt und folgende zusätzliche Parameter ausgewählt:
Code#define USE_SCRIPT_GLOBVARS #define USE_SCRIPT_FULL_JSON_PARSER #define USE_WEBSEND_RESPONSE #define USE_SCRIPT_WEB_DISPLAY #define SUPPORT_MQTT_EVENT
Damit kann ich nun die Temperaturwerte von 2 Geräten auf dem jeweils anderen mit anzeigen lassen,
hier über die globalen Variablen:
Das Skript dazu (so5 wie so3 nur andersrum mit den Werten)
Code
Alles anzeigen>D g:so3temp=0 g:so5temp=0 >T so3temp=DS18B20#Temperature >W DS18B20 Temperature so5 {m}%so5temp% C
Mein Sonoff DUAL R3 v2 welche die Leistungswerte der PV-Anlage erfasst ist ein ESP32 und läuft mit unmodifizierter Tasmota32.bin
Diesen Frage ich über Websend/WebQuery alle 30 Sekunden ab und lasse den Wert auf einem ESP8266 mit integriertem OLED-Display darstellen, außerdem die beiden Temperaturwerte der globalen Variablen gleich mit.
Code
Alles anzeigen>D pv=0 g:so3temp=0 g:so5temp=0 >S if upsecs%30==0{ =>WebSend [192.168.1.200] Status 10 } >E pv=WebQuery#StatusSNS#ENERGY#Power dt [z][f1l1c1lt] [f1l3c1]PV: %pv% W[f1l4c1]so3: %so3temp% C[f1l5c1]so5: %so5temp% C
Alles in allem eröffnet das natürlich viele neue Möglichkeiten, daher freue ich mich das es nun läuft! Danke nochmal!