nachdem ich mich ein wenig in MQTT eingearbeitet habe, wurde der MQTT Broker von Dir bei uns im Verein eingesetzt mit momentan nur 2 Sensoren.
Es funktioniert auch alles recht gut - nur heute Morgen entdeckte ich folgende Fehlermeldungen:
24.08.2018 09:45:00 | ScriptEngine | Result for Event 16861
<br />
<b>Fatal error</b>: Allowed memory size of 33554432 bytes exhausted (tried to allocate 47 bytes) in <b>/var/lib/symcon/scripts/18374.ips.php</b> on line <b>940</b><br />
Es handelt sich dabei um den MQTT Broker 0.15 Core und das auslösende Element ist das Event: Update Variable Events (alle 15 Minuten)
Hast Du einen Tipp für mich, was da evtl. passiert?
Ich bin gerade mal wieder dabei, an dem Broker zu arbeiten und kann hoffentlich einige Fehler noch finden und beheben. Leider ist das Debugging in manchen Fällen nicht ganz einfach, da viele Fehler nur nach längerer Zeit und unter unklaren Bedingungen aufzutreten scheinen. Es wird aber jedenfalls bald mal wieder ein Update geben.
Den Fehler, dass der Buffer voll läuft, habe ich beheben können.
[ul]
[li]Fehler, der zum Vollaufen des RegVar-Puffers und damit zum Speichermangel führte, behoben
[/li][li]Fehler behoben, dass Float-Zahlen ab IP-Symcon 5.0 mit Komma statt Punkt formatiert wurden
[/li][/ul]
Darin habe ich jetzt mal das protokoll „Domoticz MQTT“ eingestellt.
Habe ich das richtig verstanden, das die Sensoren meiner nodes als variablen in ips erstellt werden ?
Da tut sich bei mir erst mal nichts.
Die Registervariable wird aber fleißig ausgeführt, und mein Test Node wurde wohl auch erkannt.
Nun fehlen eigentlich nur noch die Values.
Da ich aber brandneu in dem Thema bin, befürchte ich, der Fehler liegt bei mir.
Ich bin mir leider nicht ganz sicher, was diese Einstellung bewirkt - das Protokoll ist ja MQTT. Eventuell geht es um die Benennung der Topics?
Das kommt ganz darauf an, was die Sensoren wie publishen. Wenn sie mit retain-Flag publishen wird daraus eine Variable, andernfalls muss die Message durch ein Handler-Skript verarbeitet werden. (Siehe Anleitung im ersten Post)
Also pro Topic wird ein Skript erstellt (bzw. eine Variable angelegt, je nachdem ob mit retain-Flag oder ohne!). In dem Skript kannst du den Wert verarbeiten.
Ich kann mich jetzt nicht auf die Schnelle in diese Firmware reinlesen die du da benutzt. Letztlich ist das Retain-Flag Bestandteil des MQTT-Protkolls und bestimmt, ob eine Nachricht nur für den Moment gültig ist (retain=false) oder vom MQTT-Broker gespeichert werden soll (true). Ob du das in deiner Firmware irgendwo direkt konfigurieren kannst weiß ich nicht.
Letztlich entspricht eine MQTT-Nachricht, die gespeichert werden soll, am ehesten einer Variablen in IPS. Eine Nachricht ohne gesetztes Retain-Flag (also false) wird stattdessen defaultmäßig nicht als Variable angelegt, sondern es wird nur ein Handlerskript erzeugt, um die Nachricht unter dem entsprechenden Topic zu verarbeiten.
Du kannst aber an dem Ort eine sog. Schatten-Variable (siehe erster Post, Ctrl+F) anlegen; diese übernimmt dann automatisch den letzten empfangenen Nachrichteninhalt unabhängig vom Retain-Flag.
Oder du behandelst die Nachricht eben per Skript, was auch immer für dich besser funktioniert in der Situation.
Es kommt demnächst noch mal ein Update, da mir einige Fehler aufgefallen sind bei der Behandlung von Datentypen. Unter anderem wurden Floats nicht richtig erkannt, wenn der empfangene Wert keine Nachkommastelle hatte (solange ein Punkt als Dezimaltrennzeichen im Wert ist soll er als Float erkannt werden). Und bei Bool-Variablen hat er beim publishing „1“ und „“ statt „true“ und „false“ verbreitet.
Der MQTT Broker läuft nun seit 3 Wochen ohne jegliches Problem auf meinem System.
Mit momentan 5 Nodes (Tendenz steigend :))
verbaut sind Lora Nodemcu V3 mit Temperatursensoren, 16-fach Porterweiterungen und Relais (Einfach, Vierfach, Achtfach) , die auch bei erfolgreichen empfangen des Befehls, eine Rückmeldung geben.
Als Betriebssystem für die Nodes benutze ich „ESPEasy MEGA“.
Für alle, die das interessiert, ist es mal einen Blick wert !
DIY Achtfach Aktor mit Rückmeldung für unter 16 euro !
Tut mir leid Homematic, aber ihr seid erstmal raus aus meinem „Aktor Bedarf“
@Padi2055: Das hatte ich in alten Versionen auch mal, mit welcher Version arbeitest du? Sonst probiere bitte mal die neuste (0.17 aktuell). Und bitte diese ganzen Session-Variablen vorher löschen!
Falls es weiterhin auftritt, müsstest du mal gucken, ob es im Log Meldungen dazu gibt, die evtl. weitere Hinweise geben können.
@Alle: Die 0.17er ist endlich raus mit zahlreichen Bugfixes