NEWS
Sayit in Betrieb nehmen
-
So ich habe das mal versucht und erstmal mit Windows Default.
Habe das in den Settings von Sayit eingestellt. Den Gong kann ich hören aber keine SayIt Ausgabe.
Ich habe dann deine Zeilen bei Skripte im Adminbereich eingegeben und gespeichert und links dann auf den roten bzw grünen Pfeil geklickt aber es kam kein Ton nicht mal der Gong.
Update: Mit Sonos läuft es schonmal also Ton und Ansagen kommen raus.
MFG Maggi
-
Hallo,
mache mal folgende schnellen Test.
Im Admin Panel unter Objekte öffne den Pfad sayit.0–>tts-->test.
Dort gib recht in das Feld mal folgendes ein.
de;100;Das ist ein Demotext
Nach drücken der Entertaste sollte dieser Satz gesprochen werden.
Ist das so?
Lg
Günther
-
Danke wie gesagt die Ausgabe geht nun.
Nun ist die Frage wie geht es weiter?
Muss das ganze nur im Skript geschrieben werden?
Da bin ich leider noch ganz am Anfang und habe keine Ahnung. Dacht das man dass evtl irgendwie über VIS machen kann so Quasi Drag&Drop.
MFG Maggi
-
Nimm für den Anfang ein Blockly.
Du erzeugst unter dem Skripte Reiter ein neues Script. Als Typ nimm Blockly.
Nun kannst du sehr simpel Anweisungen zusammenclicken.
Im Beispiel spricht meine Anlage wenn eine Systemvariable auf meiner CCU den Wert "2" angenommen hat.
Lg
Günther
1180_iobroker_1.jpg -
Ah ok das ist doch mal was habe das mal für mich eingestellt mit meinem Innogy SH aber keine Ausgabe siehe log.
ioBroker-Pi 2017-01-29 16:20:00.721 info host.ioBroker-Pi instance system.adapter.tvspielfilm.0 started with pid 20461 javascript.0 2017-01-29 16:19:06.766 info script.js.SayIt.Bürofenster: registered 1 subscription and 0 schedules javascript.0 2017-01-29 16:19:06.764 warn State "sayit.0.tts.text" not found javascript.0 2017-01-29 16:19:06.755 info Start javascript script.js.SayIt.Bürofenster javascript.0 2017-01-29 16:19:06.096 info Stop script script.js.SayIt.Bürofenster sayit.0 2017-01-29 16:18:57.801 info All files uploaded sayit.0 2017-01-29 16:18:57.657 info Upload announce mp3 files sayit.0 2017-01-29 16:18:57.640 info starting. Version 1.4.0 in /opt/iobroker/node_modules/iobroker.sayit, node: v4.5.0
MFG Maggi
-
Bitte das komplette Script posten.
Im Log steht, das er den Datenpunkt nicht findet.
Lg
Günther
-
Hänge mich gleich mal rein.
Ich versuche es gerade über Javascript, nicht Blockly.
Steckdose schalten mit Sprachrückmeldung klappt schon mal.
var idSayIt = "sayit.0.tts.text"; // Hier die entsprechende SayIt Text ID var idButton = "hm-rpc.0.LEQ1234874.1.STATE"; //Objekt var lastSay = null; // Nach Schalten wird folgender Text gesprochen subscribe({id: idButton, val: true}, function (obj) { if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) { lastSay = (new Date()).getTime(); setState (idSayIt, "de;60;Licht Hinterzimmer Ein"); } });
Ich nutze im Moment 2 Scripte - für EIN und AUS getrennt.
Kann man das auch in einem zusammen fassen ?
Was muss ich im Script ändern um eine mp3 auszugeben ?
Mit ccu.io habe ich es damals gehabt, hier im Forum habe ich noch kein Beispiel gefunden (man glaubt es kaum).
-
Hallo,
ich bin neu hier, und habe mit Sayit noch nicht viel Erfahrung. Wo gebe ich das Script überhaupt ein?
Wie kann ich denn überhaupt testen, ob ich Sayit richtig installiert habe?
Gruß Hicki
-
Bitte um Hilfe.
Gruß Hicki
-
Die Scripte gibst du im Reiter oben bei "Scripte" ein, vorausgesetzt du hast den Adapter JavaScript Script Engine installiert.
Meine laufen alle unter dem Ordner "common", ob das richtig ist weiß ich nicht.
Sprachansagen kommen aber durch.
Auf der Linken Seite siehst du ein Plus-Zeichen, damit kannst du Scripte hinzufügen.
Auf der rechten Seite musst du noch Enginetyp: JavaScript ggf. einstellen.
Siehe auch Beschreibung zum Adapter: http://www.iobroker.net/docu/?page_id=156&lang=de
(Bei mir geht die Vorankündigung gong.mp3 nicht, kriege ich aber noch hin ..
)
-
Vielen Dank Dirk, werde mich gleich mal dransetzen.
Gruß Andreas
-
Hallo ihr lieben ich versuche mich noch immer an SayIT aber ich komme nicht weiter.
Ich habe ein Script erstellt zum testen aber ich bekomme keine Ausgabe über meine Sonos das Testscript mit "HALLO WELT" geht.
Hier mal der Code in Blockly und Java
var Open;
var Open; on({id: "innogy-smarthome.0.Vorratsraum.Innentür.IsOpen"/*IsOpen*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("innogy-smarthome.0.Vorratsraum.Innentür.IsOpen").val == Open) { setState("sayit.0.tts.text", "de;30;" + 'Vorratsraum offen!'); } });
Hier der LOG.
javascript.0 2017-02-06 19:15:38.664 info script.js.SayIt.Vorratsraum: registered 1 subscription and 0 schedules javascript.0 2017-02-06 19:15:38.654 info Start javascript script.js.SayIt.Vorratsraum javascript.0 2017-02-06 19:15:37.344 info Stop script script.js.SayIt.Vorratsraum
Hoffe ihr habt einen Tip.
1901_sayit_ausgabe.png -
Sagt mal, habt ihr bei längeren Texten auch kein Funktion?
Habe bisher nichts über eine Zeichenbegrenzung (bewusst) wahrgenommen.
-
IMHO gibt es bei google eine 70 Zeichen Begrenzung.
Gruß
Rainer
-
if (getState("innogy-smarthome.0.Vorratsraum.Innentür.IsOpen").val == Open) { ```` `
Ich kenne das innogy-System nicht, aber der Datenpunkt "IsOpen" hat doch bestimmt die Werte true oder false und nicht "Open". Falls er doch den Wert "Open" hat, wäre das aber ein String und müssste in Anführungszeichen gesetzt werden.
Mein Vorschlag:
on({id: "innogy-smarthome.0.Vorratsraum.Innentür.IsOpen"/*IsOpen*/, change: "ne", val: true //spart die if-Abfrage nach true }, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // eigentlich nicht nötig, da der Vorgänger-Wert für IsOpen nicht weiter verwendet wird log("IsOpen = " + obj); setState("sayit.0.tts.text", "de;30;" + 'Vorratsraum offen!'); });
-
Danke an justr mit dem Code geht es. Nur da ich leider nicht so bewandert bin in JS würde ich dass gerne im Blockly machen.
Nur klappt es dort nicht wenn ich das so anlege auch mit der Anweisung "true".
Hoffe ihr habt da einen Tipp.
Update: Habe hier den Fehler gefunden es lag an dem Wert nach dem "=" ich hatte da nicht Logikwert benutzt.
Da das nu geht bin ich gerade dabei ein Skript zu schreiben, dass mir zu einer bestimmten Uhrzeit sagt wenn meine Terrassentür offen ist , dass sie offen ist.
Nur klappt das irgendwie nicht, vieleicht habe ich auch hier wieder einen Denkfehler würde mich freuen wenn ihr mir da wieder helfen könntet .
Hier der Screen vom Blockly. Nicht wundern hier ist es jetzt nicht die Tür sondern meine Lampe aber das Gerät sollte dabei ja egal sein.
MFG Maggi
1901_sayit_ausgabe_t_r_offen.png -
Hallo,
ich habe ein ähnliches Problem hier. Wenn da mal bitte einer drüber schauen kann?
http://forum.iobroker.net/viewtopic.php?f=21&t=5143
Gruß Andreas
-
Hallo,
Das Problem ist leicht gelöst. Frage nicht auf eine Uhrzeit ab, sondern zwischen der Uhrzeit und eine Minute später.
Grund ist, das im Hintergrund auch Sekunden mitlaufen und die natürlich nicht genau getroffen werden.
Lg
Günther
-
Hallo,
Das Problem ist leicht gelöst. Frage nicht auf eine Uhrzeit ab, sondern zwischen der Uhrzeit und eine Minute später.
Grund ist, das im Hintergrund auch Sekunden mitlaufen und die natürlich nicht genau getroffen werden.
Lg
Günther `
Danke für die schnelle Antwort. Ich habe die Zeit entfernt, aber das Problem bleibt.
für Runter:
var idSayIt = "sayit.0.tts.text"; // Hier die entsprechende SayIt Text ID var idButton = "hm-rpc.0.NEQ1562218.1.LEVEL"; //Objekt var lastSay = null; // Nach Schalten wird folgender Text gesprochen subscribe({id: idButton, val: 0}, function (obj) { if (!lastSay || ((new Date()) - lastSay) > 3000) { lastSay = (new Date()); setState (idSayIt, "de;60;Badezimmer - Rollo runter"); } });
für Hoch:
var idSayIt = "sayit.0.tts.text"; // Hier die entsprechende SayIt Text ID var idButton = "hm-rpc.0.NEQ1562218.1.LEVEL"; //Objekt var lastSay = null; // Nach Schalten wird folgender Text gesprochen subscribe({id: idButton, val: 100}, function (obj) { if (!lastSay || ((new Date()) - lastSay) > 3000) { lastSay = (new Date()); setState (idSayIt, "de;60;Badezimmer - Rollo rauf"); } });
Gruß ANdreas
-
Da das nu geht bin ich gerade dabei ein Skript zu schreiben, dass mir zu einer bestimmten Uhrzeit sagt wenn meine Terrassentür offen ist , dass sie offen ist. `
Statt den äußeren beiden Klammern brauchst du einen schedule (Zeitplan). Den findest du auch im Bereich Trigger. Darin dann einfach die if-Abfrage nach der Terrassentür.