[Modul 4.3] Tasmota

Hallo Kai,

ich habe eben auf die aktuelle Version aktualisiert, bekomme aber Fehler:


08.12.2017 07:15:21 | PHP | Error: Parsing Error: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE)
   Error in Script C:\IPSymcon\modules\IPS-Tasmota\libs\languages\de.php on Line 4
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   40 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
  121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
      in IPSLogger_PhpFatalErrorHandler

08.12.2017 07:15:21 | FlowHandler | Kann Daten nicht zur Instanz #20389 weiterleiten: <br />
<b>Parse error</b>:  syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE) in <b>C:\IPSymcon\modules\IPS-Tasmota\libs\languages\de.php</b> on line <b>4</b><br />
Abort Processing during Fatal-Error: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE)
   Error in Script C:\IPSymcon\modules\IPS-Tasmota\libs\languages\de.php on Line 4

Die beiden Meldungen stehen direkt hintereinander. Die Instanz 20389 ist das H801 Modul.

Ich bekomme die Meldung auch für die anderen Instanzen.

Die Statusmeldung im Modul sieht wie folgt aus:


07:20:14 MQT: tele/sonoffRGB/STATUS = {"Zeit":"2017.12.08 07:20:14","Laufzeit":0,"VCC":3.218,"POWER":"OFF","WLAN":{"AP":1,"SSID":"CRBP-IoT","RSSI":64,"APMac":"F0:9F:C2:74:2F:BA"}}

Ich vermute Du musst in der languages/de.php „WLAN“ groß schreiben.

Gruß
Christian

Hallo,

das WLAN ist aber groß geschrieben!
Der Fehler besagt auch etwas anderes, aber ich kann dort keinen Fehler erkennen, bei mir funktioniert es ohne Probleme.
Kannst du mir mal die Zeile aus der „de.php“ von deinem System zeigen? Bzw. den ersten Block mal? Mir kommt es so vor als wäre die irgendwie anders als im Git.

Grüße,
Kai

Hallo Kai,
so sieht bei mir der erste Block aus:


<?

class translate {
public const Wifi = "WLAN";
public const RESULT = "ERGEBNIS";
public const STATE = "STATUS";
public const UPTIME = "LAUFZEIT";
public const MARGINS = "TOLERANZ";
public const WARNING = "WARNUNG";
public const ENERGY = "ENERGIE";

Gruß
Christian

Hallo,

Fehler gefunden, „public const“ geht erst ab PHP 7.1.
Update mal.

Grüße,
Kai

Also erst einmal Respekt für die Arbeit, ein Modul zu erstellen.

Ich habe mich bisher mit dem MQTT-Protokoll nie beschäftigt und musste nun erst einmal ne Menge lesen.

Das bringt mich auch zum eigentlichen Thema. Wenn man völlig unbedarft an die Sache geht, sich einen einfachen sonoff Basic nimmt, steht man schon vor Problemen.

Angenommen, man kauft das fertig geflasht und möchte das nun ins System integrieren.

Module integrieren, Broker installieren, Instanzen erstellen ist ja noch für den findigen User machbar, ohne sich tagelang damit zu beschäftigen.

Nun will der einfache User einfach diesen simplen Schalter schalten. Dann suchst Du den Befehl. Über die IPS Konsole kannst Du Dir dann die möglichen Befehle dieser Instanz anzeigen lassen (falls das kein Luxus der Beta ist). Dann fragt er aber nach der Ident. Ok, dann gehst Du wieder in Beschreibungen zu Tasmota und wirst erschlagen.

Ok, schau ich mir mal in der GUI des Schalters in seiner Konsole an, was da so beim Schalten über die GUI in der Konsole ausgeworfen wird.
POWER hört sich gut an.
Dann testest Du das mal in einem Skript und prima, er schaltet schon mal.
Du bekommst aber in der IPS-Konsole Warnings ausgeworfen. Irgendwas mit Index 0 meine ich mich zu erinnern.

Mhmm. Wieder in die GUI des sonoff. Da findest Du z.B. Domoticz Parameter. Alles 0. Keine Ahnung. Weiter.

ModulParamater. Ausgewählt wurde sonoff Basic. Das Ding soll einfach ein Relais schalten aber Du bekommst die Auswahl GPIO 1,3,4,14 angezeigt. Dann gehst Du auf Suche und findest Bildchen, auf denen erkennbar ist, wo Hardwareseitig diese I/O Pins verdrahtet sind.
Aber wozu benötige ich das bei einem Basic, der nur Schalten soll.
Dann finde ich noch diese tollen Tasmota Commands.

? Wie schick ich die denn los, wenn ich nur:
Tasmota_restart
Tasmota_setPower
In IPS sehe (eins hab ich glaub ich vergessen aufzulisten)

Für Leute, die das komplexe Thema zwar verstehen würden, wenn Sie Ihre knappe Zeit für das Studium von MQTT und Tasmota investieren würden, aber für den Normaluser?

Das nur mal ein kurzer Einblick in die Erfahrung mit der Sache aus Sicht eines NichtNerds.

Keine Kritik an das Modul. Ganz und gar nicht.

Man sollte allerdings am simplen Beispiel einmal komplett darstellen, was wie wo einzustellen ist und einzugeben ist, damit so was simples wie Schalten in IPS geht.

Danke fürs zuhören

Gesendet von iPhone mit Tapatalk

+1 :d …

Hallo Boui,

da hast Du nicht ganz unrecht. Ich habe durch meine Tests mit den LEDs auch einige Hürden genommen.
Ich schlage vor, die Doku zum Modul noch etwas auszubauen. Denn das was der Tasmota-Entwickler und Kai hier gebaut haben ist ehrlich gesagt super.

Heute reicht meine Zeit dafür nicht aus, aber ich werde Kai bei der Doku unterstützen. Es könnte allerdings sein, dass ich erst die Weihnachtstage dafür verwenden kann.

Gruß
Christian

Hallo zusammen,

bei dem IPS-Tasmota Modul ist sicherlich noch etwas zu verbessern, gebe ich dir recht.
Die SetPower Funktion ist noch nicht ideal.

Ich habe folgendes noch vor:

Die SetPower Funktion soll einfach über die Variablen ID von IPS geschaltet werden.
Beispiel:

Du hast folgende Variablen:

[ul]
[li]POWER (Variablen ID in IPS 3555)[/li][li]POWER2 (Variablen ID in IPS 3556)[/li][li]POWER3 (Variablen ID in IPS 3557)[/li][li]POWER4 (Variablen ID in IPS 3558)[/li][/ul]
Das wäre zum Beispiel ein Sonoff 4 CH.
Dann soll per SetPower so geschaltet werden können: SetPower(InstanzID, 3555, true).

Das sollte doch für jeden ersichtlich sein?
Du benötigst wenn du das Tasmota Modul nutzt eigentlich keine Ahnung von den MQTT Protkoll, das läuft doch alles über die Funktionen, die ich dort eingebaut habe? Deswegen verstehe ich deine eigentliche Frage nicht (außer das mit dem Ident, das ist im Moment wirklich noch ein bisschen blöd, liegt allerdings an meiner Programierung!)

Edit: Vielleicht sehe ich das auch aus anderer Sichtweise, weil ich es selbst programmiere und mich dort mehr mit befasst habe, wenn ihr bestimmte Wünsche habt lasst es mich wissen, ich versuche diese umzusetzen. :slight_smile:

Grüße,
Kai

Zu dem letzten Absatz stimme ich Dir zu. [emoji6]

Wie Du schon richtig erkennst, interessiert den User nicht der ganze Hintergrundkrempel.
Dem ist doch völlig egal, wieso etwas passiert.

Aber wenn Du ständig gegen die Wand läufst, suchst Du halt tiefer und stößt dann auf Diese kaum verständliche Ebene. Ich hab auch mehrere Programmiersprachen gelernt und ein paar Semester WI hinter mir. Mich hat das allerdings nie so gereizt, dass ich den Ehrgeiz entwickeln konnte, dort meine Erfüllung zu finden.
Für mich hat das mittlerweile Null Reiz, mich hier einzulesen und verstehen zu wollen, was der Programmierer ins seiner NichtNormaloKonformenSprache uns sagen will.

Im Job muss ich oft komplexe technische Zusammenhänge in verständliche Worte packen, damit jeder DAU damit zurecht kommt. Ich lasse mir das dann selbst erläutern und finde dann die passenden Worte ( oder nicht)

Zum Thema: ich kann zwar jetzt Schalten aber warum diese Warnings?

Gesendet von iPhone mit Tapatalk

Hallo Boui,

kannst du mir mal ein Log davon geben?
Oder hast du das schon getan, ich habs zumindest nicht gesehen.

Grüße,
Kai

@Boui: Versuchs mal mit Tasmota_POWER als Ident. Bei mir kommen keine Warnungen mehr…

Vielen Dank an Kai für das Modul!!!

Hallo Kai,

jetzt sind die Übersetzungsfehler weg.

Ich habe aber ein Device mit Englischer Oberfläche und drei Temperatursensoren(1Wire) dran. Das ging auch bis zum letzten Update. Ich habe den jetzt auch auf die aktuelle Tasmota Firmware umgestellt, allerdings in Englisch.

Jetzt werden die Variablen bei jedem Update neu angelegt.

Anbei der dump aus dem Log der Instanz.

Gruß
Christian

dump.txt (14.6 KB)

Hallo Christian,

sollten eigentlich nur neu angelegt werden, wenn sich die Sprache ändert…
Weil die Idents für die Variablen werden anhand des Namens im Tasmota Gerät erstellt.

Vielleicht fällt mir da noch etwas besseres ein.

Grüße,
Kai

Damit ging es bei mir auch… drauf gekommen bin ich nur weil ich das Modul in Debug gestellt habe und mir angeschaut habe was denn das so läuft…

Hallo Hagbard235,

ich werde diese Funktion anpassen, wie weiter oben beschrieben, dann sollte das alles einfach und übersichtlicher werden. :slight_smile:

Sorry für die Verwirrung!

Grüße,
Kai

Ja,

aber leider werden die Variablen aktuell bei jeder Aktualisierung neu angelegt:

Die Instanz steht bei Sprache auf Englisch, was auch korrekt ist.

Gruß
Christian

Hallo,

:eek: dazu benötige ich mal ein längeres Log!
Das sieht ja ganz verrückt aus.

Grüße,
Kai

Hallo kai,

ich starte über IPS das Device neu. Hier das Log nach dem Neustart aus der Console:


00:00:00 Project sonoff Sonoff (Topic RADESP006, Fallback DVES_0F9570, GroupTopic sonoffs) Version 5.10.0
00:00:00 WIF: Connecting to AP1 CRBP-IoT in mode 11N as RADESP006...
00:00:09 WIF: Connected
00:00:09 DNS: Initialized
00:00:09 HTP: Web server active on RADESP006.local with IP address 10.0.112.136
00:00:12 MQT: Attempting connection...
00:00:12 MQT: Connected
00:00:12 MQT: tele/RADESP006/LWT = Online (retained)
00:00:12 MQT: cmnd/RADESP006/POWER = 
00:00:12 MQT: tele/RADESP006/INFO1 = {"Module":"WeMos D1 mini","Version":"5.10.0","FallbackTopic":"DVES_0F9570","GroupTopic":"sonoffs"}
00:00:12 MQT: tele/RADESP006/INFO2 = {"WebServerMode":"Admin","Hostname":"RADESP006","IPAddress":"10.0.112.136"}
00:00:12 MQT: tele/RADESP006/INFO3 = {"RestartReason":"Software/System restart"}
11:29:59 MQT: tele/RADESP006/STATE = {"Time":"2017-12-08T11:29:59","Uptime":0,"Vcc":2.732,"Wifi":{"AP":1,"SSId":"CRBP-IoT","RSSI":38,"APMac":"F0:9F:C2:74:2F:BA"}}
11:29:59 MQT: tele/RADESP006/SENSOR = {"Time":"2017-12-08T11:29:59","DS18B20-1":{"Id":"0000026A6A2D","Temperature":51.1},"DS18B20-2":{"Id":"0000026A796D","Temperature":38.9},"DS18B20-3":{"Id":"0000026A8FD7","Temperature":51.8},"TempUnit":"C"}

Und der dump aus dem Debug der Instanz.

Die JSON Meldungen sind identisch. Jetzt meldet das Device nur noch zyklisch Werte bei Temperaturänderung, oder alle 5 Minuten

11:34:59 MQT: tele/RADESP006/STATE = {"Time":"2017-12-08T11:34:59","Uptime":0,"Vcc":2.733,"Wifi":{"AP":1,"SSId":"CRBP-IoT","RSSI":36,"APMac":"F0:9F:C2:74:2F:BA"}}
11:34:59 MQT: tele/RADESP006/SENSOR = {"Time":"2017-12-08T11:34:59","DS18B20-1":{"Id":"0000026A6A2D","Temperature":51.2},"DS18B20-2":{"Id":"0000026A796D","Temperature":38.3},"DS18B20-3":{"Id":"0000026A8FD7","Temperature":51.9},"TempUnit":"C"}

Der Teil im Debug der Instanz sieht dann aus, wie nach dem Neustart

Gruß
Christian

dump.txt (12.8 KB)

Hallo,

was ich hier im Log sehen kann, danach dürfte er eig. nicht mehr anlegen.
Wie sehen die Idents der „komischen“ Variablen denn aus?

Grüße,
Kai

Wenn ich da einen Vorschlag machen dürfte: Nimm nicht die Variablen-ID’s, sowas kann sich ändern, alleine schon wenn eine Instanz wegen einer neuen Modul-Version mal aktualisiert wird oder ähnliches. Dann wird es schwer das alles zuzordnen und wenn sie erstmal weg sind weiß man nicht mal mehr zu welcher Instanz sie gehört haben und sie sind verteilt in irgendwelchen Scripten.

Wie wäre es mit :
SetPower(InstanzID, KanalNr, true)
also statt der Variablen immer die Nr des SONOFF-Kanals… 1,2,3,4.etc. das würde konstant bleiben.