NEWS
Nudging - Nur einen Wert in eine Variable für Sayit
-
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.
-
Ich bin mit dem JS Script noch ein Dummy. Wo wird das hingeschrieben und wie wird es aufgerufen? Danke für Hilfe.
-
-
Rainer,
Jetzt weiß ich, wie und wo ich Scripte anlege. Fehlt nur noch, wie ich sie aufrufe? Da ich kein Profi bin, verzeih mir meine vlt. dumme Frage. Und danke für die Hilfe.
Bernd
-
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
-
Pix,
Ich danke Dir. Bedeutet "eigentlich ",' dass ein Aufruf resp. einAauslösen des Scripts über den Browser zu Testzwecken gar nicht geht? Denn bei CCU.io war das ja möglich…
Liebe Grüße
Bernd
-
-
Oder wenn du auf den Reload Button klickst 8-) :
Fitti
-
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
-
Wow! Danke!
-
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
-
Vielleicht nerve ich ja das Forum, aber…
Ich möchte mit JS Script eine homematic Variable ansprechen resp. verändern. Die device finde ich. Aber wo verstecken sich die ganzen homematic Variablen, die ich in der CCU gesetzt habe?
-
Unter hm-rega.0
Gesendet von meinem LIFETAB_S785X mit Tapatalk
-
Homoran,
danke für den Tipp. Aber um offen zu sein: iobroker ist hier ziemlich kryptisch. Da muss man schon feste raten, was was ist. Vgl. Dateianhang mit dem PrintScreen.
Gibt es denn bei iobroker keine Möglichkeit des Klartexts? Ich hatte die Variablen in der CCU ja in Klartext benannt. Dto Programme, dto. Geräte. Aber all das scheint im iobroker verschwunden. Oder stelle ich mich nur doof an und habe irgendwo einen Haken vergessen zu setzen?
622_image.jpeg -
Irgendwas scheint da zu fehlen.
Ich sehe das hier auf dem tablet nicht richtig, aber die header scheinen nicht zu den spalten zu passen.
Der header "Name " scheint gar keine korrespondierende spalte zu haben.
Als workaround könntest du dir unter objects die nummer heraussuchen. Da sind auch die klartextnamen drin.
@Bluefox sollte sich das mal ansehen.
Gruß
Rainer
Gesendet von meinem LIFETAB_S785X mit Tapatalk