Elektrofix Du hast vermutlich den MQTT Adapter in iobroker benutzt statt den Sonoff-Adapter, der alles schön aufteilt. Natürlich bekommst du über den MQTT Adapter die Daten als JSON String angezeigt.
Beiträge von sunburstc
-
-
In dem MQTT Log sehen die Daten doch gut aus?
-
Hallo sunburstc,
In deinem howto erklärst du ja auch wie man einen wasserzähler ausliest. Hier sagst du das es den LJ12A3-4-Z” NPN 3-adrig auch in einer anderen Version gibt weil das auslesen mit diesem sehr knapp ist. Hat der die selbe Bezeichnung?
Kannst du mir das vielleicht etwas genauer erklären wie du das gemacht hast? Funktioniert es auch mit einem wemos ?
Ja, sowohl mein Gaszähler als auch Wasserzähler und Stromzähler sind am Wemos angeschlossen gewesen.
Es werden unterschiedliche Dinge berichtet zu dem genannten Sensor. Bei manchen funktioniert das ganz gut, bei anderen nicht so gut. Bei mir war es der 2. Fall. Ich hatte öfter falsche Werte.
Die Voraussetzung für so einen Sensor ist, dass du einen Wasserzähler hast, der ein Metallplättchen auf einen der Zeiger hat. Ich glaube in dem HowTo ist ein Bild davon.
Ich bekam damals kurz drauf einen neuen Zähler der dieses Plättchen nicht mehr besaß. Deshalb musste ich sowieso auf ein anderes verfahren umstellen. Aktuell nutze ich eine Reflexionslichtschranke mit einem sehr kleinen grünen punkt die auf den 1L Zeiger ausgerichtet ist. Am Gaszähler nutze ich ein Handelsübliches Reedrelais. So eins, wie man oft bei Tachometer fürs Fahrrad benutzt. Die Ausrichtung ist ein wenig fummelig. Aber irgendwann hat man die richtige Position gefunden.
Um auf deine Frage zurück zu kommen.
Den Sensor gibt es auch in einer dickeren Ausführung. Die genannte Variante war für das Dicke Zählerglas schon sehr knapp bemessen. Ein Sensor, der einen längeren Abstand messen kann, würde sich vermutlich besser eignen.
-
Top! Vorweihnachtliches Geschenk ;)!
Wenn du ihn eh schon im erweiterten Modus hast, kannst du ja mal schauen, ob du noch mehr Daten rausholen kannst.
Dazu musst du dein Script erweitern.
Du kannst dir dazu die Debug Daten ansehen oder aber in die Bedienungsanleitung schauen. Vielleicht fehlen dir noch ein paar Daten.
Wie der Descriptor funktioniert findest du in meinem Howto oder eben auch auf der Tasmota SML Doku Website.
-
Ich liege jetzt schon im Bett werde morgen früh nochmal weiter testen. Aber das mit 3 Sekunden kam ungefähr hin. Mal sehen was er dann an meinem Zähler macht.
Danke bist hierhin schonmal, ich werde dann morgen berichten.
Weißt du wie ich rausbekomme welches die Lese / sendediode beim Zähler ist?
Kein Problem.
Die Sendedioden > Zähler sind oft klar. Die Empfangdioden sind meist blau/UV gefärbt. Aber es gibt eh nur zwei Möglichkeiten :D.
In der Bedienungsanleitung von dem Zähler laß ich, dass es möglich ist über den Pin im Menü "inf" die Ausgabe auf erweitert umzustellen. Vielleicht ist das noch eine zusätzliche Idee.
-
Das ist ja wenigstens schonmal ein Teilerfolg! Wenn sie im 3 Sekunden Rhythmus blinkt, dann hast du auf jedenfall die Senderichtung korrekt.
Jetzt muss der Lesekopf richtig herum an deinen Zähler! Also sende auf lese und lese auf sendediode.
Allerdings solltest du bei korrekter Verkabelung auch mit einer Fernbedienung wenigstens ein paar 0000 oder ähnliches in der Konsole bei eingeschaltetem debugging:
bekommen.
Wenn du in die Webkonsole:
eintippst. Wird dann dort auch die Zahl 53 aufgeführt?
-
Hey, sorry der Post von dir muss fast zeitgleich mit meinem passiert sein so das ich den garnicht gesehen hab. Das Skript ist aktiviert und die den Fehler mit den Pins hatte ich auch schon gesehen. Habe es auf 3 und 1 geändert.
Eigentlich muss ich ja auch nicht mehr neu flashen wenn alles erstmal läuft.
Code
Alles anzeigen>D >B =>sensor53 r >M 1 +1,3,o,0,300,STROM,1,30,2F3F210D0A,063035310D0A 1,1-0:1.8.0*255(@1,Gesamtverbrauch,KWh,total,4 1,1-0:1.8.2*255(@1,Einspeisung,KWh,total,4 1,1-0:1.8.0*96(@1,Verbrauch 1 Tag,KWh,total_1d,4 1,1-0:1.8.0*97(@1,Verbrauch 7 Tage,KWh,total_7d,4 1,1-0:16.7.0*255(@1,Verbrauch aktuell,W,current,20 #
bzgl. Flashen>Richtig. Und man kann auch noch via OTA eine neue FW hochladen.
Dann könntest du nun mal schauen, was bei "sensor53 d1" in der Webconsole erscheint.
Dort müssten ja normalerweise nun Daten ankommen.
In meinem Tutorial findest du Beispielausgaben für diesen Befehl.
Es lohnt sich immer, mal die RX&TX Leitungen miteinander zu vertauschen falls nichts ankommt. Wie gesagt, da ist oft ein durcheinander mit der Beschriftung.
Übrigens, solange sensor53 d1 aktiv ist, werden keine Daten im Hauptmenü aktualisiert. Um die "debug" Ausgabe zu deaktivieren und die Ausgabe im Hauptmenü wieder zu aktivieren musst du "sensor53 d0" in die Webconsole eintippen. Übrigens alles ohne Anführungszeichen.
-
Genau das sollst du ja eben nicht tun. Nichts in den Einstellungen angeben. Alles auf none lassen!
Das schrieb ich im vorherigen Post.
Code
Alles anzeigen>D >B =>sensor53 r >M 1 +1,12,o,0,9600,STROM,13,30,2F3F210D0A,063035310D0A 1,1-0:1.8.0*255(@1,Gesamtverbrauch,KWh,total,4 1,1-0:1.8.2*255(@1,Einspeisung,KWh,total,4 1,1-0:1.8.0*96(@1,Verbrauch 1 Tag,KWh,total_1d,4 1,1-0:1.8.0*97(@1,Verbrauch 7 Tage,KWh,total_7d,4 1,1-0:16.7.0*255(@1,Verbrauch aktuell,W,current,20 #
Script ist aktiviert? Also ganz oben im Scripteditor ein haken gesetzt?
Und der Lesekopf ist laut deinen Scriptangaben für RX(Lesekopf) an GPIO12 und für TX(Lesekopf) an Gpio13 angeschlossen?
Ich würde das script umändern auf 3 und 1. Und dementsprechend auch die Kabel des Lesekopfes auf 3 und 1 stecken statt auf 13 und 12. Kannst dann allerdings nicht mehr via Kabel neu flashen solange der Lesekopf angeschlossen ist.
Evtl. Musst du die RX/TX Kabel deines Lesekopfes tauschen. Es ist manchmal etwas verwirrend mit der Beschriftung.
Wie die Meterdefinition funktioniert, welche Zahl was bedeutet, findest du hier:
-
Super vielen Dank nochmal, damit hat es geklappt. Das Problem war da aber auch erstmal das man die Sprache so wie bei dir in der Anleitung nicht mehr in die User_config.override schreiben konnte das hat er immer gemeckert das er den Ländercode nicht finden konnte. Nachdem ich den gelöscht habe lief es aber durch und ich konnte es auf den esp Flashen. Jetzt warte ich nur noch auf meinen lesekopf und dann mal schauen.
Sehr gut! Ja, das sind so diese kleinen Sachen, die leider nicht mehr so sind wie es einmal war. Vielleicht finde ich zwischen den Jahren etwas mehr Zeit um die Beschreibung zu überarbeiten. Bei Tasmota verändert sich laufend irgendetwas und man kann fast alle zwei Wochen etwas in der Beschreibung ändern. Dafür habe ich allerdings einfach keine Zeit.
Wenn du später den Lesekopf anschließt, musst du keine GPIOs in den Einstellungen definieren. Die Definition der Gpios findet im Script selbst statt. Falls du ein Wemos D1 Mini oder NodeMCU verwendest, stelle allerdings deine Tasmota software auf das Modul Generic. Also Modul 18. Das geht ganz einfach via Webconsole: Module 18
Danach startet der Wemos neu.
-
Nein. Kann ich so nichts zu sagen.
Ich selbst nutze auch kein Windows.
Würde dir gitpod empfehlen. Da brauchst du auch nichts installieren.
Siehe Tasmota Doku:
https://tasmota.github.io/docs/Gitpod/
An dem entsprechenden Punkt der verlinkten Beschreibung dann Dort die oben angegebenen Sachen in die User_config_override einfügen.
-
Danach hab ich mich schon durch gekämpft so gut es ging aber irgendwie fehlt in meinem Studio der Build Button oder ich bin zu doof den zu finden. Hatte in anderen Foren noch gesehen das man noch die xsns_91_sml.ino editieren muss die hab ich nicht mal gefunden
xsns91 gibt es schon lange nicht mehr.
Wenn du Informationen dazu haben möchtest, solltest du dich mit den ersten 10 Seiten dieses Forums beschäftigen ;)!
Eigentlich ist in der Doku die ich verlinkt habe alles soweit erklärt.
Alternativ kannst du auch einfach über gitpod kompilieren. Auch das wird sowohl in der Doku die ich verlinkte als auch in der offiziellen Tasmota Doku erklärt.
Du musst dann nur in dem aktuellen DevBuild von Tasmota in der Datei user_config_override.h:
Code#ifdef USE_RULES #undef USE_RULES #define USE_SCRIPT #define USE_SML_M #define USE_SCRIPT_WEB_DISPLAY #define USE_SCRIPT_SUB_COMMAND
hinzufügen.
Das ganze kompilieren und übertragen.
Danach wählst du dich in den Hotspot ein den Tasmota erstellt, trägst deine WIFI Daten ein.
Hiernach dann die IP von deinem Tasmota Gerät herausfinden und diese im Webbrowser aufrufen.
Unter Einstellungen / Script kannst du dich dann austoben.
Beispiele für Energiezähler und allgemeine Scripte hierzu gibt es in der Tasmota Doku. Stichwort: SML oder Scripting
All das^ stand aber auch in meiner verlinkten Doku. Und das gehört definitiv nicht zu den Dingen die sich seit Tasmota v8 geändert haben.
-
Hallo Tipe1965 schau doch mal unter:
https://docs.google.com/document/d/1ol…e3Al00xj2g/edit
Hab es aus Zeit gründen lang nicht mehr aktualisiert. Daher trifft nicht mehr alles zu was dort steht, vieles aber schon.
Schau es dir mal an.
-
Schau doch mal auf die Benennung. Die Variable gibt es nicht. Dimmervalue. Bei dir heißt sie Dimmvalue =)!
Das von mir war nur ein Beispiel wie es in etwa aussehen muss. Hatte nicht damit gerechnet ,dass du des direkt kopierst :-P!
%1var% bedeutet eine Dezimalstelle.
Es müsste auch noch: %1.1var% geben oder %0.1var% bin mir nicht sicher. Das ist für eine führende Null. also statt: 1.5 ein 01.5.
-
Dann vor der Übertragung noch ein if hinzufügen.
If dimmerlevel>100{
dimmerlevel=100
}
If dimmerlevel<=0{
dimmerlevel=0
}
Websend dimmerlevel
-
Moin Moin.
Naja das beste ist natürlich immer erstmal auf alles zu verzichten. Ich weiß gerade nicht, wie sich der Empfänger verhält wenn er einen Dimmerwert über 100 bekommt. Ob er das dann auch einfach auf 100 reduziert. Ansonsten müsste man das mit einem IF abfangen.
Bzgl. Platz im Script.
Falls du ein Wemosd1mini oder nodemcu mit 4mb Flash hast, dann kompilieren doch wie folgt:
In deiner user_config_override hinzufügen:
Code#define USE_SCRIPT_FATFS -1 #define FAT_SCRIPT_SIZE 4096 #define USE_SCRIPT_FATFS_EXT #define SDCARD_DIR
und quick&dirty in deiner Platformio.ini:
entsprechend abändern.
Es muss allerdings via Kabel geflasht werden. Weil "neu partitioniert" wird.
Also dementsprechend gehen auch deine Einstellungen und das Script vermutlich verloren.
Ein vorheriges Erase ist eh nie verkehrt ;)!
Danach stehen dir zumindest 4096 Zeichen zu Verfügung.
-
Die Abstände sind viel zu lang zwischen den Daten.
Man beachte wie es bei mir aussieht:
Code
Alles anzeigen21:50:08 : 77 01 0b 09 01 45 53 59 11 03 a9 30 f4 08 01 00 62 0a ff ff 00 72 62 01 65 00 9d 7d 75 21:50:08 : 77 21:50:08 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 53 59 01 21:50:08 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 53 59 11 03 a9 30 f4 01 21:50:08 : 77 07 01 00 01 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:08 : 77 07 01 00 02 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 00 1e 01 21:50:08 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:08 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 00 00 01 21:50:08 : 77 07 81 81 c7 f0 06 ff 01 01 01 01 04 31 07 0f 01 01 01 63 8a 62 00 76 0b 45 53 59 41 30 f4 01 d8 78 5f 62 00 62 00 72 63 02 01 71 01 63 be 09 00 00 00 00 1b 1b 1b 1b 1a 03 94 8b 21:50:09 : 1b 1b 1b 1b 01 01 01 01 76 0b 45 53 59 41 30 f4 01 d8 78 60 62 00 62 00 72 63 01 01 76 01 04 45 53 59 08 45 53 59 7d 76 78 60 0b 09 01 45 53 59 11 03 a9 30 f4 01 01 63 37 1c 00 76 0b 45 53 59 41 30 f4 01 d8 78 61 62 00 62 00 72 63 07 01 21:50:09 : 77 01 0b 09 01 45 53 59 11 03 a9 30 f4 08 01 00 62 0a ff ff 00 72 62 01 65 00 9d 7d 76 21:50:09 : 77 21:50:09 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 53 59 01 21:50:09 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 53 59 11 03 a9 30 f4 01 21:50:09 : 77 07 01 00 01 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:09 : 77 07 01 00 02 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 00 1e 01 21:50:09 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:09 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 00 00 01 21:50:09 : 77 07 81 81 c7 f0 06 ff 01 01 01 01 04 31 07 0f 01 01 01 63 d8 0f 00 76 0b 45 53 59 41 30 f4 01 d8 78 62 62 00 62 00 72 63 02 01 71 01 63 1f 2d 00 00 00 00 1b 1b 1b 1b 1a 03 8c bd 21:50:10 : 1b 1b 1b 1b 01 01 01 01 76 0b 45 53 59 41 30 f4 01 d8 78 63 62 00 62 00 72 63 01 01 76 01 04 45 53 59 08 45 53 59 7d 21:50:10 : 77 78 63 0b 09 01 45 53 59 11 03 a9 30 f4 01 01 63 d9 ed 00 76 0b 45 53 59 41 30 f4 01 d8 78 64 62 00 62 00 72 63 07 01 21:50:10 : 77 01 0b 09 01 45 53 59 11 03 a9 30 f4 08 01 00 62 0a ff ff 00 72 62 01 65 00 9d 7d 21:50:10 : 77 21:50:10 : 77 21:50:10 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 53 59 01 21:50:10 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 53 59 11 03 a9 30 f4 01 21:50:10 : 77 07 01 00 01 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:10 : 77 07 01 00 02 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 00 1e 01 21:50:10 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:10 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 00 00 01 21:50:11 : 77 07 81 81 c7 f0 06 ff 01 01 01 01 04 31 07 0f 01 01 01 63 8d 86 00 76 0b 45 53 59 41 30 f4 01 d8 78 65 62 00 62 00 72 63 02 01 71 01 63 f9 8d 00 00 00 00 1b 1b 1b 1b 1a 03 c1 c3 21:50:11 : 1b 1b 1b 1b 01 01 01 01 76 0b 45 53 59 41 30 f4 01 d8 78 66 62 00 62 00 72 63 01 01 76 01 04 45 53 59 08 45 53 59 7d 78 78 66 0b 09 01 45 53 59 11 03 a9 30 f4 01 01 63 5c 8f 00 76 0b 45 53 59 41 30 f4 01 d8 78 67 62 00 62 00 72 63 07 01 21:50:11 : 77 01 0b 09 01 45 53 59 11 03 a9 30 f4 08 01 00 62 0a ff ff 00 72 62 01 65 00 9d 7d 78 21:50:11 : 77 21:50:11 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 53 59 01 21:50:11 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 53 59 11 03 a9 30 f4 01 21:50:11 : 77 07 01 00 01 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:11 : 77 07 01 00 02 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 00 1e 01 21:50:11 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:11 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 00 00 01 21:50:12 : 77 07 81 81 c7 f0 06 ff 01 01 01 01 04 31 07 0f 01 01 01 63 45 b4 00 76 0b 45 53 59 41 30 f4 01 d8 78 68 62 00 62 00 72 63 02 01 71 01 63 97 3a 00 00 00 00 1b 1b 1b 1b 1a 03 76 f9 21:50:12 : 1b 1b 1b 1b 01 01 01 01 76 0b 45 53 59 41 30 f4 01 d8 78 69 62 00 62 00 72 63 01 01 76 01 04 45 53 59 08 45 53 59 7d 79 78 69 0b 09 01 45 53 59 11 03 a9 30 f4 01 01 63 5b 89 00 76 0b 45 53 59 41 30 f4 01 d8 78 6a 62 00 62 00 72 63 07 01 21:50:12 : 77 01 0b 09 01 45 53 59 11 03 a9 30 f4 08 01 00 62 0a ff ff 21:50:12 : 00 72 62 01 65 00 9d 7d 79 21:50:12 : 77 21:50:12 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 53 59 01 21:50:12 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 53 59 11 03 a9 30 f4 01 21:50:12 : 77 07 01 00 01 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:12 : 77 07 01 00 02 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 00 1e 01 21:50:12 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:12 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 00 00 01 21:50:13 : 77 07 81 81 c7 f0 06 ff 01 01 01 01 04 31 07 0f 01 01 01 63 da 17 00 76 0b 45 53 59 41 30 f4 01 d8 78 6b 62 00 62 00 72 63 02 01 71 01 63 24 c4 00 00 00 00 1b 1b 1b 1b 1a 03 ac e3 21:50:13 blink 21:50:13 : 1b 1b 1b 1b 01 01 01 01 76 0b 45 53 59 41 30 f4 01 d8 78 6c 62 00 62 00 72 63 01 01 76 01 04 45 53 59 08 45 53 59 7d 7a 78 6c 0b 09 01 45 53 59 11 03 a9 30 f4 01 01 63 78 93 00 76 0b 45 53 59 41 30 f4 01 d8 78 6d 62 00 62 00 72 63 07 01 21:50:13 : 77 01 0b 09 01 45 53 59 11 03 a9 30 f4 08 01 00 62 0a ff ff 00 72 62 01 65 00 9d 7d 7a 21:50:13 : 77 21:50:13 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 53 59 01 21:50:13 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 53 59 11 03 a9 30 f4 01 21:50:13 : 77 07 01 00 01 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:13 : 77 07 01 00 02 08 00 ff 64 00 01 80 01 62 1e 52 03 59 00 00 00 00 00 00 00 1e 01 21:50:13 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 03 e1 01 21:50:13 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 03 59 00 00 00 00 00 00 00 00 01 21:50:13 : 77 07 81 81 c7 f0 06 ff 01 01 01 01 04 31 07 0f 01 01 01 63 fe ae 00 76 0b 45 53 59 41 30 f4 01 d8 78 6e 62 00 62 00 72 63 02 01 71 01 63 e0 cf 00 00 00 00 1b 1b 1b 1b 1a 03 56 8f
Hab auch ein easymeter.
Was sind das da in deinem log für connect failed? bei websend?
Ja ich hatte die 16 wieder vergessen. Dadurch wird ein Median eingeschaltet. Aber ich finde sehr seltsam, dass deine Ergebnisse so selten kommen.
Offensichtlich hängt der ganze Laden, wenn websend keinen host erreicht.
Code
Alles anzeigen>D 25 ;debug ein/aus debug=0 ;vars curr=0 pheiz=0 cnt1=0 cnt2=0 ;schwellwert 20, verzögerung 5 sw=20 vz=5 pin=0 pout=0 pcurr=0 pheizstab=2000 dimmlevel=0 url_1="[192.168.118.13]" url_2="[192.168.118.58]" >B ;Setze Teleperiode auf 10s tper=10 =>sensor53 r >T pin=SML#Total_in pout=SML#Total_out curr=SML#Power_curr ;was passiert hier? pcurr=0-SML#Power_curr >S if pheiz<=0 and curr>sw{ pheiz=curr-sw ; print Aller erster fall } if pheiz>=sw and curr-sw>sw and cnt1>vz{ pheiz=pheiz+curr-sw cnt1=0 } if pheiz>=sw and curr-sw>sw{ ; print cnt1 up cnt1=cnt1+1 } else { ; print cnt1 reset cnt1=0 } if pheiz>=sw and curr-sw<sw and curr<0 and cnt2>vz{ pheiz=pheiz+curr cnt2=0 } if pheiz>=sw and curr-sw<sw and curr<0{ ; print cnt up cnt2=cnt2+1 } else { ; print cnt2 reset cnt2=0 } if pheiz<0{ pheiz=0 } if debug>0 { print print ----------------------------- print Akt. Curr: %1curr% print pheiz: %1pheiz% print cnt1: %0cnt1% print cnt2: %0cnt2% print pcurr: %pcurr% print ----------------------------- print } if upsecs%tper==0 and pin>0 and curr>0 { if curr<15000{ print akt curr %1curr% =>publish q3b/Power_curr %curr% } } if upsecs%30==0 and pin>0 and curr>0 { dimmlevel=pheiz*100/pheizstab ;Warum wird der eigene Dimmlevel verändert? =>dimmer %0dimmlevel% print dimmer los ->WebSend %url_2% dimmer %0dimmlevel% if pcurr>260{ print powerOn ->WebSend %url_1% POWER1 ON } if pcurr<10{ print powerOff ->WebSend %url_1% POWER1 OFF } } if upsecs%300==0 { print upsec300 =>publish q3b/Total_in %pin% =>publish q3b/Total_out %pout% } ;print %secs% Sekunden >W ;webdisplay ------------------------- Akt. Curr: {m} %1curr% pheiz: {m}%1pheiz% cnt1: {m}%0cnt1% cnt2: {m}%0cnt2% pcurr: {m}%pcurr% ------------------------- >M 1 +1,3,s,16,9600,SML 1,77070100010800ff@1000,Verbrauch,KWh,Total_in,1 1,77070100020801ff@1000,Einspeisung,KWh,Total_out,1 1,77070100010700ff@1,Aktueller Verbrauch,W,Power_curr,0 #
Was passiert da in der >T Sektion mit dem 0-smlcurrent? Wozu?
-
Code
Alles anzeigen>D ;debug ein/aus debug=0 ;vars curr=0 pheiz=0 cnt1=0 cnt2=0 ;schwellwert 20, verzögerung 5 sw=20 vz=5 pin=0 pout=0 pcurr=0 pheizstab=2000 dimmlevel=0 url_1="[192.168.118.13]" url_2="[192.168.118.58]" >B =>sensor53 r >T pin=SML#Total_in pout=SML#Total_out curr=SML#Power_curr pcurr=0-SML#Power_curr >S if pheiz<=0 and curr>sw{ pheiz=curr-sw print Aller erster fall } if pheiz>=sw and curr-sw>sw and cnt1>vz{ pheiz=pheiz+curr-sw cnt1=0 } if pheiz>=sw and curr-sw>sw{ print cnt1 up cnt1=cnt1+1 }else{ print cnt1 reset cnt1=0 } if pheiz>=sw and curr-sw<sw and curr<0 and cnt2>vz{ pheiz=pheiz+curr cnt2=0 } if pheiz>=sw and curr-sw<sw and curr<0{ print cnt up cnt2=cnt2+1 }else{ print cnt2 reset cnt2=0 } if pheiz<0{ pheiz=0 } if debug>0 { print print ----------------------------- print Akt. Curr: %1curr% print pheiz: %1pheiz% print cnt1: %0cnt1% print cnt2: %0cnt2% print pcurr: %pcurr% print ----------------------------- print } if upsecs%tper==0 { if curr>0 and curr<15000( =>publish q3b/Power_curr %curr% } dimmlevel=pheiz*100/pheizstab =>dimmer %dimmlevel% =>WebSend %url_2% dimmer %dimmlevel% if pcurr>260{ =>WebSend %url_1% POWER1 ON } if pcurr<10{ =>WebSend %url_1% POWER1 OFF } } if upsecs%300==0 { =>publish q3b/Total_in %pin% =>publish q3b/Total_out %pout% } >M 1 +1,3,s,0,9600,SML 1,77070100010800ff@1000,Verbrauch,KWh,Total_in,1 1,77070100020801ff@1000,Einspeisung,KWh,Total_out,1 1,77070100010700ff@1,Aktueller Verbrauch,W,Power_curr,0 #
Das ist der Teil der die Maxima begrenzt. Werden die über/unterboten, wird nichts gepostet.
Probier mal das rot markierte probehalbe mit +> oder -> zu ersetzen. Habe aktuell kein ESP um etwas zu testen.
Normalerweise müsste der esp8266 genug dampf haben um das alles zu können. Bei mir wurde eine lange zeit ein 3Phasen Modbuszähler, ein Q3BAA und 2 Lichtschranken ausgelesen ohne Probleme. Deshalb wundert mich das alles sehr. Und ist es nur der eine Wert der immer wieder zicken macht? Hast du mal über sensor53 d1 geschaut ob evtl. die Nachrichten nicht korrekt ankommen?
Hast du dein Sleep verändert?
Übrigens, nach Möglichkeit kein delay verwenden.
Vielleicht hilft es auch einfach schon die >M Sektion ans Ende des scripts zu packen.
-
Ja verstehe. Du hast recht.
Hm. Aber das wäre tatsächlich das einzige was ich mir vorstellen kann, was viel Laufzeit in Anspruch nimmt. Hast du die FW mit 160Mhz Takt kompiliert oder mit den Standart 80Mhz?
Vielleicht könnte das noch helfen.
Dazu in der Platform.ini
board_build.f_cpu = 80000000L
auf:
board_build.f_cpu = 160000000L
ändern.
Oder die Websend Geschichte in mehrere Parts aufteilen, so das sie einige Sekunden verzögert zueinander sind.
Eine weitere Möglichkeit wäre, den Wert vor dem Websend abfragen. Befindet dieser sich bei <1 oder > 10kw dann soll der Wert nicht übertragen werden.
-
opferwurst Hm. Und das Problem bestand zuvor nicht?
Ersetze mal deine => mit einem ->
Ist dieser Teil hier nicht eh doppelgemoppelt?
=>publish q3b/Total_in %pin%
=>publish q3b/Total_out %pout%
=>publish q3b/Power_curr %curr%
Weil der ESP sendet doch schon zu jeder Teleperiod unter dem Namen "sml" die gleichen Daten.
Ändere doch einfach den Namen.
-
Kontrolliere mal deinen mqtt Count. Der wird mit jeder Tele Message gesendet. Wenn der seltsam hoch ist oder ansteigt, dann hinters da Verbindungsfehler. Dann läuft hängt der esp kurz. Falls nicht, mach aus der 0 vor der 9600 eine 16
>M 1
+1,3,s,0,9600,SML