NEWS
Nudging - Nur einen Wert in eine Variable für Sayit
-
Prima. Das geht. Danke.
Auch wieder nur zum Lernen:
Nun sagt er "Es sind 17 Punkt 2 Grad." Da w
ä
re doch sch
ö
ner, wenn der "Punkt" ein "Komma" w
ä
re.Also wollte ich Testweise die Variabel splitten (wie gesagt - alles nur um zu lernen) - beim Suchen hier fand ich den xxx.split(.) Befehl.
var idSayIt = "sayit.0.tts.text" /*Text to speech*/ var Temperatursensor = getState("hm-rpc.0.LEQ0099999.1.TEMPERATURE"); /*Garten Terrasse Temperatur und Feuchte:1.TEMPERATURE*/ var temperatur = Temperatursensor.val.toString(); var temp_array = []; var d = new Date (); // Zerlege Wert temp_array = temperatur.split("."); setState (idSayIt, "Es ist jetzt " + d.getHours() + " Uhr und " + d.getMinutes() + "Die Temperatur beträgt " + temp_array[0] + "," + temp_array[1] + " Grad.");Jetzt sagt er aber: Es ist jetzt 23 Uhr und 55Die Temperatur betr
ä
gt 17,undefined Grad.Warum ist also das Array temp_array[1] nicht gesetzt?
Mit einem````
temperatur = temperatur.replace('.', ',');Wie gesagt, es geht um's lernen und verstehen. Eigentlich müsste doch beim Splitten in temp_array[1] die "2" stehen, oder? -
Hallo,
var idSayIt = "sayit.0.tts.text" /*Text to speech*/ var Temperatursensor = getState("hm-rpc.0.LEQ0099999.1.TEMPERATURE"); /*Garten Terrasse Temperatur und Feuchte:1.TEMPERATURE*/ var temperatur = Temperatursensor.val.toString(); var temp_array = []; var d = new Date (); // Zerlege Wert temp_array = temperatur.split("."); setState (idSayIt, "Es ist jetzt " + d.getHours() + " Uhr und " + d.getMinutes() + "Die Temperatur beträgt " + temp_array[0] + "," + temp_array[1] + " Grad.");Es ist kein Fehler zu finden (abgesehen, von dem fehlenden Semikolon nach der ersten Zeile). Die Zeile var temp_array =[][/i] _kannst du evtl weglassen.
Was geben denn````
log(temperatur);
log(temp_array[1]);Gruß Pix_ -
interessant - jetzt geht es.
Vorher sagte aber auch das log "undefined". Den Text hatte ich aus dem log kopiert.
Daf
ü
r bekomme ich kein Log nach 0.00h. Die letzten Eintr
ä
ge sind von 23:59:49
…
Ein reload brachte auch nichts.

Was muss man denn machen?
-
liegt es vielleicht daran, dass es f
ü
r jeden Tag ein eigenes log gibt? -
Ich frage mich schon die ganze Zeit, wie das mit dem Logging gel
ö
st ist. Ich finde keine Auswahl f
ü
r ein altes logging , noch eine Stelle, wo man die Gr
ö
ß
e der Logs einstellen kann.Ich hab' gerade eben herausgefunden woran das "undefined" liegt. Der HM Sensor speichert zwar 16.0 als Wert, bei ,0 Zahlen werden diese aber als 16 gespeichert. Somit gibt es kein Split und das Array[1] ist undefined.
Warum aber die ,0 verschwinden ist mit schleierhaft.
-
das gesamte log findest du auf der banane
Gesendet von meinem Cynus T7 mit Tapatalk
-
Bis vor einigen Wochen/Monaten?? gab es nur eine einzige log Datei. Da gab es an der ein oder anderen Stelle Probleme mit der Gr
ö
ß
e der log-files.Bluefox hat das dann so gel
ö
st, das das log immer f
ü
r die letzten 3 Tage abgespeichert wird.Du findest die 3 log-Dateien im Verzeichnis ioBroker/log.
Ich bin mir nicht ganz sicher, aber im Moment ist das logging (Gr
ö
ß
e, Anzahl der Logfiles
…
) (noch) nicht einstellbar.
305_manadjustments.txt -
Danke.
Das mit der 0 habe ich jetzt abgefangen.
// Einfache Temperaturansage mit SayIt. // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht // "Es sind 18 Punkt 2 Grad " sagt. var idSayIt = "sayit.0.tts.text"; /*Text to speech*/ var Temperatursensor = getState("hm-rpc.0.LEQ00xxxxx.1.TEMPERATURE"); /*Temperatursensor:1.TEMPERATURE*/ var temperatur = Temperatursensor.val.toString(); var temp_array = []; temp_array = temperatur.split("."); // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist. // Es wird dann nur "18" gelesen. if (!temp_array[1]) { temp_array[1] = "0"; log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt."); } setState (idSayIt, "Die Temperatur beträgt " + temp_array[0] + "," + temp_array[1] + " Grad.");// Einfache Temperaturansage mit SayIt. // Variante 2 mittels ersetzen des Punktes in ein Komma, damit die Ausgabe nicht // "Es sind 18 Punkt 2 Grad " sagt. var idSayIt = "sayit.0.tts.text"; /*Text to speech*/ var Temperatursensor = getState("hm-rpc.0.LEQ00xxxxx.1.TEMPERATURE"); /*Temperatursensor:1.TEMPERATURE*/ var temperatur = Temperatursensor.val.toString(); temperatur = temperatur.replace('\.', '\,'); setState (idSayIt, "Die Temperatur beträgt " + temperatur + " Grad.");Vielleicht hat ja jemand auch mal das Problem.
-
-
Fehlt nur noch, wie ich sie aufrufe? ` eigentlich solltest du sie nicht manuell aufrufen. Sie starten sich selbst beim Speichern. Wenn dann eine, der
ü
berwachten Bedingungen eintritt (Schedule, Aktorstatus, etc.), dann wird nach Skript abgearbeitet.Gru
ß
Pix
-
-
Danke, Fitti
6305_hm_sv_tuer.png -
So, erster Test mit dem ersten Script von Fitti auch hier bei mir erfolgreich. Jetzt brauche ich noch Hilfe zum triggern. Kann mir jemand sagen, wie ich in JS programmiere, z. B. : T
ü
re auf (T
ü
r/Fenster Kontakt vorhanden), Durchsage ausl
ö
sen?Danke f
ü
r die Hilfe! -
Kann mir jemand sagen, wie ich in JS programmiere, z. B. : T
ü
re auf (T
ü
r/Fenster Kontakt vorhanden), Durchsage ausl
ö
sen? `var status_zustand_tfk = ['geschlossen','geöffnet']; on("hm-rpc.0.SERIENNUNMERTFK.1.STATE"/*Fenster links Wohnzimmer.STATE*/, function (data) { var status_geraet = 'Wohnzimmer Fenster links'; // Klartextname des Gerätes // alternativ: status_geraet = data.name; var ansage = status_geraet + ' ' + status_zustand_tfk[data.newState.val] log(ansage, 'info'); setState("sayit.0.tts.text"/*Text to speech*/, ansage); });Seriennummer und Name des Ger
ä
tes noch anpassen. Sayit-Adapter sollte nat
ü
rlich installiert und aktiviert sein.Gru
ß
,Pix
-
Die L
ö
sung Deiner Frage findest DU in der Javascript-Doku unter "subscribe" bzw. "on".Trotzdem hier ein Beispiel, welches eine Nachricht ausgibt (nicht
ü
ber sayit sondern
ü
ber pushover):subscribe({id: "hm-rpc.0.KEQ0955279.1.STATE"/*Wohungstür Kontakt*/ , val: true}, function (obj) { sendTo("pushover", "Wohnungstür geöffnet"); });Gru
ß
Gerhard
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
