NEWS
Lovelace Taster erstellen
-
Hallo
Ich stehe etwas auf dem Schlauch, Ich dachte mir dass ich mal versuche meinen Roborock Saugroboter in der Visualisierung von Lovelace einzubinden. Schon bin ich an meine Grenzen gestoßen. Ich weiß nicht wie man einen Taster erstellt der nur kurz angeht und dann wieder zurück. Ich drücke z.B. den Taster der den Roboter frägt wo er ist. Das funktioniert aber der Schalter beibt auf ON .
Wie muss ich vorgehen dass der Schalter nach dem drücken wieder zurück springt.
Hab die Schalter automatisch erstellen lassen.
Danke Fränki -
@fraenki23
warum ist es wichtig, dass der schalter zurück springt? Theoretisch hat der Schalter keinen Zustand.Ich würde empfehlen das UI entsprechend zu bauen, also keinen switch zu nehmen, sondern einen button. Ich weiß nicht genau, welche Karte du nutzen willst. Aber in einer "Elemente"-Karte kann man dafür z.B. den type: Button nehmen. Wenn dann auch noch immer derselbe Wert geschickt werden soll (z.B. true), sähe das z.B. so aus:
type: entities entities: - type: button name: Position action_name: abfragen tap_action: action: call-service service: switch.turn_on service_data: entity_id: switch.Roboter_position_abfragen title: Roborock Saugroboter show_header_toggle: false
Es gibt auch extra Button Card usw...
-
@garfonso Hallo Vielen Dank für deine Hilfe. Ja es hat auch funktioniert wenn man 2 mal den Button gedrückt hat. So ist es aber durch Deine Hilfe viel schöner.
Gruß und Dank Frank -
Hallo, ich würde das gerne noch einmal aufgreifen hier.
Der Taster setzt bei mir den Wert auf TRUE, bleibt dann aber und wechselt nicht wieder zurück auf FALSE.
Gibt es hierfür auch eine Lösung? -
@fozzy
Taster haben per Definition keinen Wert und gehen auch nicht wieder zurück, sondern lösen halt was aus, wenn man sie drückt.Wenn du was hast, was zwischen true/false wechseln soll, dann brauchst du keinen Taster, sondern einen Schalter. Auf englisch switch. Entsprechend für das ioBroker Objekt einfach manuell ein switch-Entity anlegen. Dann gibt es im UI auch einen Schalter der zwischen true/false umschaltet.
Wenn das nicht passen sollte, musst du deinen Use-Case etwas weiter ausführen.
-
Hallo zusammen,
das Thema hatte ich auch. Zuerst mit Szenen und dann mit dem Saugroboter.
Ich löse das mit dem Skript unten. Reagiert manchmal aber leider etwas träge.
/************************************************************************************* * Wenn man in Lovelace in einem Glance Szenen aktivieren will gibt es kein optisches Feedback * * Hier wird ein Bool Objekt für Lovelace angelegt und indirekt die Szene geschaltet. * **************************************************************************************/ //Bool Objekte für Lovelace anlegen // diese müssen noch Manuel für Lovelace aktiviert werden createState('Szenenschalter.Scene0', 0, {type: 'boolean'}); createState('Szenenschalter.Scene1', 0, {type: 'boolean'}); createState('Szenenschalter.GuteNachtJoe', 0, {type: 'boolean'}); createState('Szenenschalter.GutenMorgenJoe', 0, {type: 'boolean'}); createState('Szenenschalter.MorgensAuf', 0, {type: 'boolean'}); createState('Szenenschalter.AbendsZu', 0, {type: 'boolean'}); createState('Szenenschalter.NachtsZu', 0, {type: 'boolean'}); createState('Szenenschalter.Beschattung', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_Speisekammer', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_Kueche', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_EssZi', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_WoZi', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_Eingang', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_FlurEG', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_Buero', 0, {type: 'boolean'}); createState('Szenenschalter.Robi_WC', 0, {type: 'boolean'}); //Eine Liste dieser Objekte generieren //Muss zur Zuordnung in der selben Reihenfolge wie unten sein const Szenenschalter_ids = [ 'javascript.0.Szenenschalter.Scene0', 'javascript.0.Szenenschalter.Scene1', 'javascript.0.Szenenschalter.GuteNachtJoe', 'javascript.0.Szenenschalter.GutenMorgenJoe', 'javascript.0.Szenenschalter.MorgensAuf', 'javascript.0.Szenenschalter.AbendsZu', 'javascript.0.Szenenschalter.NachtsZu', 'javascript.0.Szenenschalter.Beschattung', 'javascript.0.Szenenschalter.Robi_Speisekammer', 'javascript.0.Szenenschalter.Robi_Kueche', 'javascript.0.Szenenschalter.Robi_EssZi', 'javascript.0.Szenenschalter.Robi_WoZi', 'javascript.0.Szenenschalter.Robi_Eingang', 'javascript.0.Szenenschalter.Robi_FlurEG', 'javascript.0.Szenenschalter.Robi_Buero', 'javascript.0.Szenenschalter.Robi_WC', ] //Liste der zugehörigen Szenen //Muss zur Zuordnung in der selben Reihenfolge wie oben sein const Szenen_ids = [ 'scene.0.scene0', 'scene.0.scene1', 'scene.0.GuteNachtJoe', 'scene.0.GutenMorgenJoe', 'scene.0.Rolladen.MorgensAuf', 'scene.0.Rolladen.AbendsZu', 'scene.0.Rolladen.NachtsZu', 'scene.0.Rolladen.Beschattung', 'mihome-vacuum.0.rooms.xxxxxxxxxx.roomClean',//Speisekammer 'mihome-vacuum.0.rooms.xxxxxxxxxx.roomClean', //Küche 'mihome-vacuum.0.rooms.xxxxxxxxxx.roomClean', //Esszimmer 'mihome-vacuum.0.rooms.xxxxxxxxxx.roomClean', //Wohnzimmer 'scene.0.RobiEingang2Mal', //Eingang 'mihome-vacuum.0.rooms.xxxxxxxxxx.roomClean', // Flur EG 'mihome-vacuum.0.rooms.xxxxxxxxxx.roomClean', //Büro 'mihome-vacuum.0.rooms.xxxxxxx.roomClean', //WC ] /******************************************************************* * Wird aufgerufen wenn einer der Schalter in Lovelace gedrückt wird * Aktiviert dann die Szene */ on(Szenenschalter_ids , async function (obj) { let Schalter = obj.id; //der Schalter hat sich geändert, also ist er in der ID let array_pos = Szenenschalter_ids.indexOf(Schalter); //Jetzt die Position im array oben bestimmen let Szene = Szenen_ids[array_pos]; //die zugehörige Szene muss die selbe Position haben //console.log(Szene); //console.log(Schalter) //SchalterChanged(Szene,Schalter); //Wert des Schalter lesen, wenn true Szene aktivieren let Schalterstate = getState(Schalter).val; if(Schalterstate==true) { setState(Szene,true); setStateDelayed(Schalter, false, 1000, false); //Schalter zurück setzen } //Wert der Szene in den Schalter schreiben, damit Status richtig angezeigt wird //let Szenenstate = getState(Szene).val; //setState(Schalter,Szenenstate); });