• Weihnachtspause

    Im Zeitraum vom 21.12.2024 bis zum 03.01.2025 erfolgt kein Versand. Ab dem 04.01.2025 sind wir dann wieder wie gewohnt für euch da!

    Das WLANThermo Team wünscht euch allen fröhliche und glückliche Feiertage!

ioBroker - WLANThermo

Easyrunner

New member
Moin!
Hier mal meine Settings:
2020-09-10 08_56_01-Window.jpg2020-09-10 08_56_35-Window.jpg2020-09-10 09_09_11-Window.jpg


Ich hatte auch mal MQTT Client ausprobiert, funktioniert nicht. Adapter bleibt auch gelb.
Dann Websockets und auch die IP ADSresse angegeben, wo MQTT läuft.
Hat alles nichts gebracht.
Wie gesagt, lesen kann ich, nur nicht schreiben.
Ich habe knapp 20 ESPs an MQTT, von denen ich lesen und auch schreiben kann.

Also, Dutchman hat mit dem Sourceanalytix erst mal wichtigere Sachen zu tun, als zwei Hansels helfen, die halt den Nano nicht über ioBroker beschreiben können.
Die Grillsaison ist eh' vorüber, und außerdem denke ich schafft man es gerade noch die Werte über der Weboberfläche zu verändern als über ein Wandtablet :)
 

DennyPenny

New member
Hallo, bin Neuling im Bereich iobroker. Hab diesen Thread gelesen, aber ich kriege den Adapter nicht ans laufen.

Version 0.1.1 finde ich gar nicht, nutze "latest" beim repository. Habe 0.1.2 über den Github Link installiert. Dann Instanz angelegt. IP in die Konfig. Danach reagiert mein iobroker so gut wie gar nicht mehr und der Adapter lässt den Speicher voll laufen (bei > 500 MB habe ich den Adapter beendet.). Das Log läuft mit folgenden Einträgen über:

Screenshot_20201103-232150.jpg


Was mache ich falsch? Ich komm nicht drauf :-(
Danke im Voraus!
 

Dutchman

New member
Uff da entsteht irgendwie ne ganz böse Loop bei dir kan mir aber nicht erklären warum, kannste mal bitte Screenshot der Einstellungen machen ?
 

DennyPenny

New member
Hi, klar, da ist aber ja auch nicht so viel einzustellen:

Screenshot_20201104-000010.jpg


Hab es auch ohne unsername und password probiert, da läuft der Speicher zwar nicht voll, aber er findet auch nichts.

Mein iobroker läuft in einem docker container auf meinem synology nas.

Ich kann ja eigentlich nur was falsch konfiguriert haben, aber was?

Danke im Voraus 🙂
 

DennyPenny

New member
Moin, bitte "neu" definieren? Mein Nano habe ich seit Januar. 😊

Noch eine Frage: Adapter und Mqtt hängen nicht zusammen, oder? Über den mqtt Adapter bekomme ich einen Datenpunkt, aber nur einen langen String, den ich zerlegen müsste.. Und da dachte ich der Nano Adapter wäre "einfacher"...

Gruß
Dennis
 

s.ochs

BOFH
Teammitglied
Admin
Mit "neu" sind die Modelle mit ESP32 gemeint, bei dir nicht der Fall.

Und nein, der nano Adapter von @Dutchman holt sich die Daten über http. Alternativ kann man die Daten auch über den mqtt Adapter holen, man muss dann den JSON String nur selbst zerlegen. Dazu gibt es hier ja auch schon Info.
 

Dutchman

New member
@DennyPenny du hattest über gut installiert ? Geh mal bitte im Admin auf den Adapter (expertenmodus an) und downgrade da die Version.

auf git lieht momentan „non-working“ code
 

DennyPenny

New member
Hi.. Super, wie schnell mir hier alle helfen wollen.

Das Downgrade funktioniert leider nicht:
Screenshot_20201104-101637.jpg

Wie immer: Vielen Dank im Voraus!


Hier mal meine Repository Links.. Liegt hier das Problem?
Screenshot_20201104-101812.jpg
 

Dutchman

New member
Hier mal meine Repository Links.. Liegt hier das Problem?
nope, ich gehe mal davon aus das du "default" eingestellt hast und das ist OK, latest = beta der adapter ist aber noch in beta.

geh mal bitte auf die console und dan

cd /opt/iobroker
iobroker install wlanthermo-nano@latest

PS; ich glaube ich weis langsam welche Baustelle ich diese WE aufgreifen muss :D pff Zuviel Prior man o man
 

DennyPenny

New member
Hi.. es will nicht klappen...

1604496625615.png

nach der ersten Meldung habe ich erst die Instanz und dann den Adapter gelöscht...

Noch eine Idee? Und vielen Dank für die Unterstützung!!! :)
 

Markus7501

Active member
Was du brauchst ist:
xyz= getState(pathdata).val;
(Pathdata = der Wert den du haben willst). Ich gestallte meine Scripte immer so, dass sie von außen Parametrisiert werden können.



Schau mal,
so sieht z.B. mein Javascript zum auswerten von MQTT hier im Forum aus ( auslesen der Werte vom Mini V2 mit ESP32).
Hier das Javascript:


//Init
//1. Benötigte Variabelen als Einstellungen, weden später in einer Variabelen geseiuchert und können zur Laufzeit verändert werden
var device = "MINI-2462abc32738"; //Name Mini
var pathmqtt = "mqtt.0.WLanThermo."; //MQTT Name
var pathdata = pathmqtt + device + ".status.data"; //MQTT volständiger Pfad
var pathjs = "javascript.0.Grill."; //genera iobroker path
var pathChannels = pathjs + device + ".channel"; // path to store chanels
var pathPitmaster = pathjs + device + ".pitmaster"; // path to store pitmaster
var pathSettings= pathjs + device +".settings"; // settings path in iobroiker
var pitmaster_connected = 2 ; // number of connected Pitmaster modules
var max_chanels = 12; // anzahl der verfügbaren Kanäle
var debug = false ; // debug write infos
// save Settings
createState(pathSettings +'.device', device, {type: 'string',name: 'Grill.0.Settings.device'});
createState(pathSettings +'.pathmqtt', pathmqtt, {type: 'string',name: 'Grill.0.Settings.pathmqtt'});
createState(pathSettings +'.fullpath', pathdata, {type: 'string',name: 'Grill.0.Settings.fullpath'});
createState(pathSettings +'.pathjs', pathjs, {type: 'string',name: 'Grill.0.Settings.pathjs'});
createState(pathSettings +'.pathChannels', pathChannels, {type: 'string',name: 'Grill.0.Settings.pathChannels'});
createState(pathSettings +'.pathPitmaster', pathPitmaster, {type: 'string',name: 'Grill.0.Settings.pathPitmaster'});
createState(pathSettings +'.max_chanels', max_chanels, {type: 'int',name: 'Grill.0.Settings.max_chanels'});
//2. Alle Kanäle autonmatisch anlegen.
function create_varaiables (debug, max_chanels,pitmaster_connected)

{
var variab =`${pathChannels}.${max_chanels}.alarm`;

if (debug == true){ log ("Check variabels");log("Varaib12Alarm is :" + (getState(variab).val)); log ("variab is :" + variab);}
//Prüfen ob alle Variabelen schon existieren, wennn nicht neu anlegen
if ((getState(variab).val)==null)
{
if (debug == true){ log ("Varaib 12 not found, create all");}
//Variabelen anlegen für max 12 Kanäle ( je nach definition oben)
for (var i = 0; i < max_chanels; i++)
{

createState(`${pathChannels}.${i+1}.alarm`, 0, {type: 'number',name: `${pathChannels}.${i+1}.alarm`});
createState(`${pathChannels}.${i+1}.temp_min`, 0, {type: 'number',name: `${pathChannels}.${i+1}.temp_min`});
createState(`${pathChannels}.${i+1}.temp_max`, 0, {type: 'number',name: `${pathChannels}.${i+1}.temp_max`});
createState(`${pathChannels}.${i+1}.actual_temp`, 0, {type: 'number',name: `${pathChannels}.${i+1}.actual_temp`});
createState(`${pathChannels}.${i+1}.color`, 0, {type: 'string',name: `${pathChannels}.${i+1}.color`});
createState(`${pathChannels}.${i+1}.type`, 0, {type: 'number',name: `${pathChannels}.${i+1}.type`});
createState(`${pathChannels}.${i+1}.connected`, false, {type: 'boolean',name: `${pathChannels}.${i+1}.connected`});
createState(`${pathChannels}.${i+1}.fixed`, false, {type: 'boolean',name: `${pathChannels}.${i+1}.fixed`});
createState(`${pathChannels}.${i+1}.name`, "name", {type: 'string',name: `${pathChannels}.${i+1}.name`});
}
}

// Variabelen für den Pitmaster
var variab =`${pathPitmaster}.${pitmaster_connected}.status`;
if ((getState(variab).val)==null)
{
for (var i = 0; i < pitmaster_connected; i++)
{

createState(`${pathPitmaster}.${i+1}.pitmaster`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.pitmaster`});
createState(`${pathPitmaster}.${i+1}.connected_chanel`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.connected_chanel`});
createState(`${pathPitmaster}.${i+1}.pid`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.pid`});
createState(`${pathPitmaster}.${i+1}.current_value`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.current_value`});
createState(`${pathPitmaster}.${i+1}.set_temp`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.set_temp`});
createState(`${pathPitmaster}.${i+1}.status`, "0", {type: 'string',name: `${pathPitmaster}.${i+1}.status`});
createState(`${pathPitmaster}.${i+1}.set_color`, "0", {type: 'string',name: `${pathPitmaster}.${i+1}.set_color`});
createState(`${pathPitmaster}.${i+1}.value_color`, "0", {type: 'string',name: `${pathPitmaster}.${i+1}.value_color`});
}
}

}


function read_vaues_and_set (debug, max_chanels, pitmaster)
{ // Werte aus MQTT lesen und in alle Kanäle ( max 12 Schreiben)
//log ("pathdata is :" + pathdata);
// log (getState(pathdata).val);
try {
jr = JSON.parse(getState(pathdata).val);
}
catch (e) {
console.error('Cannot parse: ' + getState(pathdata).val);
return;
}
// Werte auslesen und ablegen für die Kanäle
for (var i = 0; i < max_chanels; i++) {

setState(`${pathChannels}.${i+1}.actual_temp`, (jr.channel.temp));
setState(`${pathChannels}.${i+1}.name`, (jr.channel.name));
setState(`${pathChannels}.${i+1}.temp_min`, (jr.channel.min));
setState(`${pathChannels}.${i+1}.temp_max`, (jr.channel.max));
setState(`${pathChannels}.${i+1}.type`, (jr.channel.typ));
setState(`${pathChannels}.${i+1}.alarm`, (jr.channel.alarm));
setState(`${pathChannels}.${i+1}.color`, (jr.channel.color));
setState(`${pathChannels}.${i+1}.connected`, (jr.channel.connected));
setState(`${pathChannels}.${i+1}.fixed`, (jr.channel.fixed));
}


if (debug == true) {console.log('Data ausgelesen');}

}

function read_pid_and_set (debug, max_chanels, pitmaster)
{ // Werte aus MQTT lesen und in alle Kanäle ( max 12 Schreiben)
//log ("pathdata is :" + pathdata);
// log (getState(pathdata).val);
try {
jr = JSON.parse(getState(pathdata).val);
}
catch (e) {
console.error('Cannot parse: ' + getState(pathdata).val);
return;
}

//Werte Auslesen für die Pitmaster ! Mini V1 = 1 Mini V2 = 2
for (var i = 0; i < 2; i++)
{

setState(`${pathPitmaster}.${i+1}.pitmaster`, (jr.pitmaster.pm.id));
setState(`${pathPitmaster}.${i+1}.connected_chanel`, (jr.pitmaster.pm.channel));
setState(`${pathPitmaster}.${i+1}.pid`, (jr.pitmaster.pm.pid));
setState(`${pathPitmaster}.${i+1}.current_value`, (jr.pitmaster.pm.value));
setState(`${pathPitmaster}.${i+1}.set_temp`, (jr.pitmaster.pm.set));
setState(`${pathPitmaster}.${i+1}.status`, (jr.pitmaster.pm.typ));
setState(`${pathPitmaster}.${i+1}.set_color`, (jr.pitmaster.pm.set_color));
setState(`${pathPitmaster}.${i+1}.value_color`, (jr.pitmaster.pm.value_color));

}
if (debug == true) {console.log('Data ausgelesen');}

}


function main(debug)
{ log ("debug is :" + debug)
create_varaiables(debug, max_chanels,pitmaster_connected);
read_vaues_and_set(debug, max_chanels, pitmaster_connected);
read_pid_and_set(debug, max_chanels, pitmaster_connected);
}
//Event based start
on({id: pathdata, change: "any"}, function (obj) {
main(debug);
});
 

DennyPenny

New member
Hi... Danke.. Ich hatte da Script auch schon gesehen hier im Thread. Werde es mal am Wochenende ausprobieren und dann hier berichten. Morgen kommt Pulled Pork auf den Grill, vielleicht probiere ich es auch morgen schon, wenn die Kids es zulassen 😊
 

DennyPenny

New member
So..bin nicht fähig... habe das Skript eingebunden.. habe dann die fehler im log überprüft. Habe daraufhin alle einträge zum pitmaster enfernt.. weil ich keine habe und es da auch fehler gab.

Anbei mal das von mir gekürzte Skipt. Zusätzlich der Inhalt von mqtt status data und das Log des Skriptes bei Ausführung. Er meckert beim schreiben der Werte.

Folgend noch Screenshots aus meinen objekten. @Markus7501 kannst du damit was anfangen? Bin nicht so fit was skripten angeht, habe versucht es nachzuvollziehen und ich finde kein Problem.

Ist echt relevant, dass ich einen Nano habe? Ich hoffe nicht ;-)

1604657601039.png

1604657633072.png
 

Anhänge

  • Skript-Log.txt
    41.6 KB · Aufrufe: 5
  • status.data.txt
    1 KB · Aufrufe: 5
  • Skript.txt
    5.3 KB · Aufrufe: 11

s.ochs

BOFH
Teammitglied
Admin
Naja, ihr vermischt gerade die Versionen. Das Skript von @Markus7501 ist für die API der ESP32-Modelle geschrieben. Dort gibt es Parameter, die in deinem Nano V1+ nicht existieren, z. B. "fixed" und "connected". Deshalb wird das Skript meckern, da diese Parameter nicht gefunden werden. Ich hatte für die API vom Nano V1/V1+ mal das hier gepostet: Link
Ansonsten wär der aktuelle Adapter von @Dutchman schon das richtige für dich. Warum der bei dir nicht läuft kann ich leider auch nicht sagen. Soweit ich weiß will sich @Dutchman am WE aber eh wieder an den Adapter ranmachen um die Integration der ESP32 API voranzuführen, da wird er sich vermutlich auch deinen Bug ansehen.
 

DennyPenny

New member
Danke... So langsam komme ich mir echt etwas dämlich vor 🙃 ich werde das Skript entsprechend überarbeiten... Und wenn dann der Adapter auch noch laufen wird, dann ist es ja noch besser..

Ich kriege das blöde Gefühl nicht los, dass es einfach an einem dummen Fehler auf meiner Seite liegt... Wie damals meine dämliche Frage zu den Login Daten (admin admin 🙄)

Ich werde berichten.
 

Markus7501

Active member
@DennyPenny Schick mir bei Problemen mal einen PN. Dan schauen wir gemeinsam was los ist. Wenn wir die Lösung haben, können wir die ja hier einstellen.
wenn du eine nicht ESP 32 Modell hast, muss eigentlich auch der Adapter laufen.
 
Oben Unten