• 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

s.ochs

BOFH
Teammitglied
Admin
@Markus7501 erstell dir doch hier im Bereich SmartHome einfach einen eigenen Fred. Dort kannst du dokumentieren. Oder du machst ein PDF und ich stelle es dann auf Github ins Projekt-Repository. Aber im eigenen Fred kannst auch gut "Support" geben.
 

Markus7501

Active member
Nein. Es muss nur einer da sein. Ich muss nachher mal in den Code schauen was da bei dir passiert ( ggf sende ich dir noch mal ein angepasstes Script).
 

Markus7501

Active member
So in Zeile 126 habe ich einen Fehler gemacht !
//Werte Auslesen für die Pitmaster ! Mini V1 = 1 Mini V2 = 2
for (var i = 0; i < 2; i++)

Ändere mal 112 bis 126 auf:

function read_pid_and_set (debug, max_chanels, pitmaster_connected)
{ // 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 < pitmaster_connected; i++)


1611955324659.png
 

DasMoritz

Member
Hi @Markus7501

perfekt, das war es!
Nun läuft alles wunderbar so wie es soll.
Vermutlich macht es Sinn wenn du noch einmal das gesamte Skript einstellst, oder?

Ich habe ein weiteres Thema, weiß aber nicht ob das hier "richtig" ist.
Ich würde gerne die Temperaturwerte der angeschlossenen Kanäle per Alexa abfragen.

Was geht:
Ich kann über eine Routine und ein Blockly-Skript gezielt den Wert zu einem Kanal zurückgeben, Beispiel:
Frage: Alexa, wie ist die Temperatur von Kanal 1?
Antwort: "Garraum: 54,7°C" (ich übernehme also name und actual_temp in den Sprachtext von Alexa)
Ergebnis wären dann aber 8 "Routinen".

Was geht nicht / was möchte ich?
Ich möchte mit einer Schleife eigentlich alle Kanäle als Sprachtext ausgeben, bei denen die Temperatur <999°C ist, idealerweise auch so, dass die Reihenfolge der eingesteckten Sonden egal ist (Sonde 1: Vorhanden, Sonde 2: Nicht Vorhanden, Sonde 3: Vorhanden).

Der Rückgabewert bei gesteckter Sonde 1 und Sonde 3 soll dann sein:
Antwort: "Kanal 1: 54,7°C, Kanal 3: 58,7°C" ("Kanal" ist dabei wieder der festgelegte "name", also variabel).
Nicht-belegte Kanäle sollen nicht ausgegeben werden, bzw. werden im untenstehenden Skript noch mit "nicht vorhanden" ausgegeben.

Ich scheitere da gerade irgendwie, da ich durch Alexa die Schleife nicht sauber ausgegeben bekomme.
Mit Debug kann ich die Schleifeniterationen wunderbar ausgeben, Alexa kann aber schon den einfachen "Durchgang" der Schleife nicht ausgeben (Zahl von 1 bis 8).

Hat jemand eine Idee?
Ansonsten muss ich das über 8 Routinen lösen und immer gezielt nach dem Kanal fragen.
Viel eleganter ist es natürlich, wenn sie einfach alle "Namen" und dazugehörigen "Temperaturen" ausgibt.

1612125065787.png

1612125085674.png
 

Markus7501

Active member
Hi,
Danke für das Feedback. Das Script kommt noch mal komplett online mit Doku. Dauert aber noch etwas, da ich noch mal komplett alles durch gehe.
 

Markus7501

Active member
Hi @Markus7501

perfekt, das war es!
Nun läuft alles wunderbar so wie es soll.
Vermutlich macht es Sinn wenn du noch einmal das gesamte Skript einstellst, oder?

Ich habe ein weiteres Thema, weiß aber nicht ob das hier "richtig" ist.
Ich würde gerne die Temperaturwerte der angeschlossenen Kanäle per Alexa abfragen.

Was geht:
Ich kann über eine Routine und ein Blockly-Skript gezielt den Wert zu einem Kanal zurückgeben, Beispiel:
Frage: Alexa, wie ist die Temperatur von Kanal 1?
Antwort: "Garraum: 54,7°C" (ich übernehme also name und actual_temp in den Sprachtext von Alexa)
Ergebnis wären dann aber 8 "Routinen".

Was geht nicht / was möchte ich?
Ich möchte mit einer Schleife eigentlich alle Kanäle als Sprachtext ausgeben, bei denen die Temperatur <999°C ist, idealerweise auch so, dass die Reihenfolge der eingesteckten Sonden egal ist (Sonde 1: Vorhanden, Sonde 2: Nicht Vorhanden, Sonde 3: Vorhanden).

Der Rückgabewert bei gesteckter Sonde 1 und Sonde 3 soll dann sein:
Antwort: "Kanal 1: 54,7°C, Kanal 3: 58,7°C" ("Kanal" ist dabei wieder der festgelegte "name", also variabel).
Nicht-belegte Kanäle sollen nicht ausgegeben werden, bzw. werden im untenstehenden Skript noch mit "nicht vorhanden" ausgegeben.

Ich scheitere da gerade irgendwie, da ich durch Alexa die Schleife nicht sauber ausgegeben bekomme.
Mit Debug kann ich die Schleifeniterationen wunderbar ausgeben, Alexa kann aber schon den einfachen "Durchgang" der Schleife nicht ausgeben (Zahl von 1 bis 8).

Hat jemand eine Idee?
Ansonsten muss ich das über 8 Routinen lösen und immer gezielt nach dem Kanal fragen.
Viel eleganter ist es natürlich, wenn sie einfach alle "Namen" und dazugehörigen "Temperaturen" ausgibt.

Anhang anzeigen 5432

Anhang anzeigen 5433
Versuch es mal mit delays. Ggf hilft das
 

DasMoritz

Member
Hi,

ich hatte bei dem letzten Eintrag in meinem Blockly-Script schon eine Verzögerung von 5sec. drin, auch das brachte nichts.
War dann: "Steuer speak mit Sprachtest mit 5 Sekunden Verzögerung"- leider ohne Erfolg.
 

Steak-Thermo

Active member
Von Alexa habe ich keine Ahnung. Ich wollte das Skript ja auch noch etwas anpassen. Ich hätte da die Idee, das etwas flexibler zu gestalten. Es soll also die Anzahl der Fühler und Pitmaster selbst ermitteln. Außerdem hätte ich vorgeschlagen, die Erstellung der Datenpunkte auszulagern. Das wird ja im Moment bei jeder Datenänderung gemacht. Da reicht es ja, das einmal beim Start zu überprüfen. Meine Ergüsse werde ich natürlich hier veröffentlichen. Markus kann sich dann ja entscheiden, ob er es übernehmen möchte.
 

Markus7501

Active member
Update: senden geht jetzt auch (Kanäle setzen). Todo:
-Pitmaster setzen
-Doku
-Neuen Thread für das Script +Support
 

DasMoritz

Member
Hi @Markus7501,

was meinst du mit "senden"?
Meinst du damit, dass die Werte (per Routine) an Alexa ausgegeben werden?

Ich bekomme das für jeden Channel einzeln hin, habe dann aber natürlich "8 Routinen", die ich gerne in "einer" zusammenfassen möchte.
Ich würde gerne testen wollen :)
 

Markus7501

Active member
Nein. Ich meinen damit Werte / Einstellungen des Thermometers über Homematic zu ändern.
dein Thema nehme ich mir am WE mal vor.
 

DasMoritz

Member
dein Thema nehme ich mir am WE mal vor.

Da bin ich echt mal sehr gespannt.
Ich habe nun einfach mal testweise zwei Skripte angelegt (beide identisch nur auf Channel 1 und Channel 2) und diese in der Alexa Routine hintereinander gelegt - es wird aber dennoch nur Skript 1 abgespielt.

Mir fällt im Moment nur noch die Option ein den Sprachtext als Variable erst "später" zusammen zu bauen, sprich erst die Entscheidungslogik mit Text1, Text2 usw, dann der Sprachtext der aus Text1, Text2 usw. besteht.
 

Steak-Thermo

Active member
Sag mal Markus,
weißt du, wie man die IDs stufenweise abfragen kann? Also bei mqtt.0.WLanThermo anfangen und schauen, was da so alles drin steckt. Das habe ich nicht hinbekommen und das Netz hat mir auch nichts geliefert. Alternativ hätte ich getIdByName genommen, aber da müsste ich im Namen ein wildcard übergeben (WLanThermo*), das kriege ich auch nicht hin.
Dank deiner Vorlage habe ich aber inzwischen doch so Einiges auf die Reihe bekommen. :)
 

DasMoritz

Member
Moin @Markus7501

hattest du zufällig Zeit dir das Thema mit der Sprachausgabe per Alexa mal anzusehen?
Ich arbeite momentan wie beschrieben mit acht smarten Geräten via IOT-Adapter, die dann ein Blockly-Script anstoßen und mir die Werte ausgeben. Das ist nicht so das Optimum wenn man bei drei Thermometern drei mal mit Alexa in die Kommunikation gehen muss...
 

Voxid

New member
Servus, sollte auch mit dem neuen Mini V3 funktionieren? .. dann wäre es daran den Adapter umzubenennen ;)
 
Oben Unten