// ##################################################################
// Erst Ansage, dann Radio ein u. nach 45 min aus
// ##################################################################
// ##################################################################
// Definitionen Ansage
// ##################################################################
// Quellen
var idWetter = "hm-rega.0.29954";
var idTemperatursensor = 'hm-rpc.0.OEQ1296052.1.TEMPERATURE'/Außentemperatur:1 TEMPERATURE/
// var idSayVar = "hm-rega.0.38101";//Variable Sayit <= Alt, wenn Steuerung via CCU Variable;
var idBM = 'hm-rpc.0.JEQ0266058.1.MOTION'/BewMldr Treppenhaus:1 MOTION/
// Definition APIsay Büro Ikea;
// var APIsayBuero = "http://192.168.0.105:5005/Büro Ikea/say/";
// Definition APIsay Schlafzimmer;
// var APIsaySchlafzimmer = "http://192.168.0.105:5005/Schlafzimmer/say/";
// Definition APIsay Kueche;
var APIsayKueche = "http://192.168.0.105:5005/Küche/say/";
// Definition APIsay Terrasse;
// var APIsayTerrasse = "http://192.168.0.105:5005/Terrasse/say/";
// Definition Lautstärke;
var lautstaerke = "50";
var aufstehen = false;
// ####################################################
// Funktionen (Basiswerte ermitteln)
// ####################################################
function ermitteleAnsagedatum () {
//Wochentag ermitteln
var d = new Date ();
var w = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
var wochentag = w[d.getDay()];
//Tagesdatum ermitteln
var tag = d.getDate();
//Monat ermitteln
var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
var monat = month[d.getMonth()];
//Jahr ermitteln
var jahr = d.getFullYear();
//Stunde ermitteln
var stunde = d.getHours();
//Minute ermitteln
var minute = d.getMinutes();
//Begrüssung ermitteln
var Begr = " ";
if(stunde<=12){Begr = "Guten Morgen"};
if(stunde>=12 && stunde<=17){Begr = "Guten Tag"};
if(stunde>17){Begr = "Guten Abend"};
return { // zurückgeben
'Jahr' : jahr,
'Monat' : monat,
'Tag' : tag,
'Wochentag' : wochentag,
'Stunde' : stunde,
'Minute' : minute,
'Begr' : Begr
};
}
function ermitteleWetter () { // Wetterbedingungen
var wetterdaten = getState(idWetter).val;
// log('Wetter: ' + wetterdaten);
return(wetterdaten);
}
function ermitteleAnsageTemperatur () {
// Die Außentemperatur ist xx. Das Wetter heute ist xx
// Einfache Temperaturansage mit SayIt.
// Variante 1 mittels splitten der Temperatur, damit die Ansage nicht
// "Es sind 18 Punkt 2 Grad " sagt.
var temperatursensor = getState(idTemperatursensor).val;
var temp_string = temperatursensor.toString();
// log('Temp ' + temp_string);
var temp_array = [];
temp_array = temp_string.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.");
}
return{
'Ganzzahl' : temp_array[0],
'Nachkommazahl' : temp_array[1]
};
}
// ##########################################################
// ANSAGE (GETRIGGERT via BewMldr)
// EINMALIG im Zeitraum 6:00 - 10:00, wenn BewMldr
// ##########################################################
on(idBM, function(dp) {
log("Motion ausgelöst");
if(dp.state.val && compareTime('6:00', '10:00', 'between') && !aufstehen) {
aufstehen = true;
log("Motion ausgelöst, in der Zeit und aufstehen falsch");
// ##########################################################
// ANSAGE Verögerung 10 sec
// ##########################################################
setTimeout(function() {
var ansagetext = ermitteleAnsagedatum().Begr + ", heute ist " + ermitteleAnsagedatum().Wochentag + " der " + ermitteleAnsagedatum().Tag + "te " + ermitteleAnsagedatum().Monat + ' ' + ermitteleAnsagedatum().Jahr
+ ". Es ist " + ermitteleAnsagedatum().Stunde + " Uhr und " + ermitteleAnsagedatum().Minute + " Minuten."
+ " Die Aussentemperatur beträgt " + ermitteleAnsageTemperatur().Ganzzahl + "," + ermitteleAnsageTemperatur().Nachkommazahl + " Grad."
+ " Wetter Bedingungen, " + ermitteleWetter() +" .";
// ##################################################################
// Ansagetext zusammenstellen und in Objekt schreiben
// ##################################################################
// Ansagetext
// Basisansage
var Ansage = ansagetext;
//Geburtstagsansage
var tempGEBURTSTAGE = "javascript.0.Ansage.GeburtstageHEUTE";
var AnsageGEBURTSTAGE = getState(tempGEBURTSTAGE).val;
//Muellsansage heute
var tempMUELLheute = "javascript.0.Ansage.MuellHEUTE";
var AnsageMUELLheute = getState(tempMUELLheute).val;
//Muellsansage Zukunft
var tempMUELLzukunft = "javascript.0.Ansage.MuellZUKUNFT";
var AnsageMUELLzukunft = getState(tempMUELLzukunft).val;
/*log("Tempansage--------------------->" + tempAnsage);
log("Ansage--------------------->" + Ansage);
{1}
log("tempGEBURTSTAGE--------------------->" + tempGEBURTSTAGE);
log("AnsageGEBURTSTAGE--------------------->" + AnsageGEBURTSTAGE);
{1}
log("tempMUELLheute--------------------->" + tempMUELLheute);
log("AnsageMUELLheute--------------------->" + AnsageMUELLheute);
{1}
log("tempMUELLzukunft--------------------->" + tempMUELLzukunft);
log("AnsageMUELLzukunft--------------------->" + AnsageMUELLzukunft);*/
// ####################################################
// Wenn Geburtstag dann mit ansagen
// ####################################################
if (AnsageGEBURTSTAGE.length > 2) { // wenn der Inhalt des Objektes "AnsageGEBURTSTAGE" größer als 2 Zeichen lang ist, dann ...
Ansage = Ansage + "Heute haben Geburtstag, " + AnsageGEBURTSTAGE +" .";
//log("Ansage mit Geburtstag--------------------->" + Ansage);
}
// ####################################################
// Wenn Müll dann mit ansagen
// ####################################################
if (AnsageMUELLheute.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLheute" größer als 2 Zeichen lang ist, dann ...
Ansage = Ansage + " Achtung, heute ist " + AnsageMUELLheute +" ." + "Bitte an die Strasse stellen" + " !";
//log("Ansage mit Geburtstag und Muell heute--------------------->" + Ansage);
}
// ####################################################
// Wenn Müll ZUKUNFT, dann mit ansagen
// ####################################################
if (AnsageMUELLzukunft.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLzukunft" größer als 2 Zeichen lang ist, dann ...
Ansage = Ansage + " Achtung, morgen ist " + AnsageMUELLzukunft + " ." + "Bitte MORGEN an die Strasse stellen" + " !";
//log("Ansage mit Geburtstag und Muell heute und morgen--------------------->" + Ansage);
}
//Ansage
Ansage = APIsayKueche + Ansage + "/" + lautstaerke;
ansagenSonos(Ansage);//Funktion mit HttpGet in Global
}, 15000);
// Ende timeout/ Verzögerung
//****************************************************************************************** */
//************************************************
//Javascript zum Schalten von Sonos via BewMldr
//************************************************
/* Das folgende sind nur Befehle, die ich mir aufgehoben habe:
// var idSonosfav = getState("sonos.0.root.192_168_0_63.favorites_list").val; //speichern des aktuellen Senders
// var idSonosplay = getState ("sonos.0.root.192_168_0_63.state_simple").val; //Status des Speakers
// laut = getState('sonos.0.root.' + raum + '.volume').val;
// log(idSonosfav);
// log(idSonosplay);*/
//*******************************************
// Definitionen für Radio
//*******************************************
// *******************************************************************************
// Info zum Verzeichnis /home/brs/node-sonos-http-api-master/static/says/;
// Definitionen MP3;
// herzlichWillkommen.mp3";
// var herz = "herzlichWillkommen.mp3";
// HundeGebell.mp3;
// var hund = "HundeGebell.mp3";
// Rolladen.mp3;
// var roll = "Rolladen.mp3";
//AUFRUF:
//Beispiel: http://192.168.0.105:5005/B%C3%BCro%20Ikea/favorite/RTL - Die besten Hits aller Zeiten
// IDsonosAufr = "http://192.168.0.105:5005/"<------hier richtige IP eintragen
// Definition STRUKTUR
// Achtung, am Ende der Einzelteile des Aufrufs jeweils ein "7"
// IDsonosAufr + IDsonosRaum + IDsonosFunktion + IDsonosSender + laut
//Favorites bzw. Sender
//IDsonosSender = "104.6 RTL Weihnachtsradio/"
//IDsonosSender = "RTL - Die besten Hits aller Zeiten/"
//IDsonosSender = "RTL - Die besten Hits aller Zeiten/"
//IDsonosSender = "RTL Deutschlands Hit-Radio/"
//Definition Räume
// Definition raum Büro Ikea;
// IDsonosRaum ="B%C3%BCro%20Ikea/";
// Definition raum Schlafzimmer;
// IDsonosRaum = "Schlafzimmer/";
// Definition raum Kueche;
// IDsonosRaum = "K%C3%BCche/";
// Definition raum Terrasse;
// IDsonosRaum = "Terrasse/";
// Definition Funktionen
// IDsonosFunktion = "say/"
// IDsonosFunktion = "clip/"
// IDsonosFunktion = "favorite/"
// IDsonosFunktion = "pause"; <-------ohne "/"
//STOP
//BEISPIEL: http://192.168.0.105:5005/B%C3%BCro%20Ikea/pause
//STRUKTUR: IDsonosAufr + IDsonosRaum + IDsonosFunktion
// das ist der Aufruf
// ansagenSonos(radioAbspiel);
// Funktion mit HttpGet in Global
// Anweisung setzen LAUTSTAERKE
// var laut = "8";//<------hier gewünschte LAUTSTÄRKE eintragen
// *******************************************************************************
var IDsonosAufr = "http://192.168.0.105:5005/";
var IDsonosRaum = "K%C3%BCche/";
// ************************************************
// Auswahl Radiosender
// Sender muß in Favoriten vorhanden sein
// momentan: 104.6 RTL Weihnachtsradio, RTL Deutschlands Hit-Radio, RTL - Die besten Hits aller Zeiten
// ************************************************
var IDsonosSender = "RTL - Die besten Hits aller Zeiten/";
// var radioAbspiel = IDsonosAufr + IDsonosRaum + IDsonosFunktion + IDsonosSender;
setTimeout(function() {
// ************************************************
// nach 60 sekunden starten
// ************************************************
// Befehle ausführen
// ************************************************
// Befehl zum play
// ************************************************
var IDsonosFunktion = "favorite/";
var radioAbspiel = IDsonosAufr + IDsonosRaum + IDsonosFunktion + IDsonosSender;
ansagenSonos(radioAbspiel);//Funktion mit HttpGet in Global
// Lautstaeke einstellen
var IDsonosFunktion = "volume/";
var laut = "8";
var radioAbspiel = IDsonosAufr + IDsonosRaum + IDsonosFunktion + laut;
ansagenSonos(radioAbspiel);//Funktion mit HttpGet in Global
// Ende lautstaerke
}, 60000);
// Ende timeout für Start
setTimeout(function() {
// ************************************************
// Befehl zum stop nach 45 Minuten
// ************************************************
var IDsonosFunktion = "pause";
var radioAbspielStop = IDsonosAufr + IDsonosRaum + IDsonosFunktion;
log("radioAbspielStop--------------------->" + radioAbspielStop);
ansagenSonos(radioAbspielStop);//Funktion mit HttpGet in Global
}, 2700000);
// Ende timeout für Stop
}
// Ende If
});
// ####################################################
// var "aufstehen" zurücksetzen auf false um 3 Uhr
// ####################################################
schedule('0 3 * * *', function() {
aufstehen = false;
});