NEWS
433 Mhz "Baumarkt Steckdosen" schalten - Kleines Beispiel
-
Hallo zusammen,
da ioBroker bei mir auf einem Raspi 3 läuft und ich hier noch 4 von diesen günstigen Baumarkt Steckdosen im 433 Mhz Bereich rumfliegen habe (Elro und Unitec), habe ich die mal wieder zum Leben erweckt und freue mich, dass ich jetzt sehr günstig viel mehr Steckdosen schalten kann. Ich nutze hauptsächlich HomeMatic und die Funksteckdosen sind ja doch recht teuer. Wenn man also eh einen Raspi hat kann man den für ca. 5 € mit einem Sendemodul versehen. Neue Steckdosen im 3er Pack gibt es ja auch oft zwischen 10 und 20€. Neben den von mir genutzten sollte es auch mit anderen Herstellern gehen, die nutzen ja irgendwie alle die gleiche Hardware. Im Netz findet sich aber auch hier und da eine Liste von angeblich kompatiblen. Ich habe darauf gar nicht geachtet und es einfach probiert.
Vorweg: Ja, keine bidirektionale Kommunikation. Bislang hab ich aber eine Erfolgsquote von 100% was das Schalten anbelangt. Und ansonsten kann man die Steckdose natürlich vorrangig für Anwendungen benutzen bei denen man anwesend ist und man das Ergebnis direkt selber sehen kann).
Letztendlich sind alle Anleitungen im Netz zu finden. Ich fasse das hier aber gerne mal zusammen als Starthilfe
BENÖTIGTE HARDWARE
-
Raspberry Pi 3 (oder anderes Modell)
-
433 MHz Empfänger und Funk- Sende Modul (kostet ca. 5 € oder im 3er Pack sogar nur 9€…, ich hab das 3er Pack genommen in der Annahme: Bei so kleinen Bauteilen kann auch eins von vorn herein kaputt sein). Das Empfangsmodul wird übrigens nicht benötigt. Soweit ich das sehe gibt es das aber immer nur im Paket.
-
Notwendige Kabel zum Anschluss des Sendemoduls (female-female jumper)
HARDWARE/SOFTWARE KONFIGURATION
-
Man muss letztendlich nur raspberry-remote installieren um die benötigte "send" funktion zu erhalten
-
Installationsanleitung für Hardware und Software z.B. hier (externer Link): https://www.einplatinencomputer.com/ras … -schalten/
-
Das Web Interface hab ich übrigens nicht aktiviert da a) der deamon nach einer gewissen Zeit immer wieder abstürzte und b) das Interface eh witzlos ist wenn man eh mit anderen Tools wie VIS, PocketControl etc. arbeitet (und schön ist es auch nicht
EINBINDEN IN HOMEMATIC UND IOBROKER
Da ich als mobile Anwendung PocketControl nutze und ioBroker bei mir "nur" Datensammler und Visualisierung im Heimnetz ist (via iPad etc.) wollte ich das Schalten auch von der CCU aus triggern können (somit auch mobil wenn es um mein Anwendungsszenario geht). Ich habe daher:
-
Pro Steckdose eine Variable in der CCU angelegt
-
Pro Steckdose ein Javascript in ioBroker aktiviert
Wenn nun die Variable in der CCU geändert wird (true/false) wird das Script ausgelöst und die Steckdose geschaltet. So muss ich zwar bei VIS den Umweg über die CCU gehen, dort die Variable schalten lassen um dann letztendlich über ioBroker das Skript auszuführen, aber ich habe einen Status der überall, auch mobil, seine Gültigkeit hat und geändert werden kann.
Das Script sieht so aus (Beispiel für Steckdose A).
on('hm-rega.0.59626', function (obj) { current_state = getState("hm-rega.0.59626").val; if (current_state == "1") { exec('/opt/raspberry-remote/./send 11101 1 1'); } else { exec('/opt/raspberry-remote/./send 11101 1 0'); } });
-
hm.rega.0.59626 muss gegen das eigene Objekt = CCU Variable getauscht werden.
-
der Speicherpfad des Send Befehls im raspberry-remote Ordner muss angepasst werden
-
Und der "Sicherheitscode" für die Steckdose sowie die Steckdosennummer müssen angepasst werden (Infos dazu findet man in den vielen Anleitungen, um raspberry-remote generell zu installieren. Nur in Kürze: 11101 = Sicherheitscode den man mit den Dip-Schaltern der Steckdosen einstellt / 1 = Steckdose A (hier im Beispiel), oder 2 = B, 3 = C etc.) / 1 bzw. 0 am Ende = ein oder ausschalten. Steckdose B (an) wäre bei mir also 11101 2 1
Klappt hervorragend bei mir. Die Reaktion ist unter 1 Sekunde, auch bei Zugriff via PocketControl über "meine-homematic" (3G/4G).
PocketControl > schaltet Variable in CCU > ioBroker erkennt Änderung der Variable (trigger über BidCoS-RF.50.PRESS_SHORT) > löst das Javascript aus > schaltet die Steckdose via send.
Man darf die einzelnen Steckdosen aber nicht zu schnell hintereinander schalten da es sonst zu einer Verzögerung kommt oder eine Steckdose gar nicht mehr schaltet. Ggf. ist der "send" Befehl oder tatsächlich das Aussenden über das Sendemodul gestört/hängt. Wenn man nach dem Schalten einer Steckdose 3 Sekunden wartet und erst dann die nächste schaltet hab ich das Problem nicht.
Vielleicht hilft das ja beim Start des eigenen Projektes.
Lg
Marc
-
-
> Vorweg: Ja, keine bidirektionale Kommunikation. Bislang hab ich aber eine Erfolgsquote von 100% was das Schalten anbelangt. Und ansonsten kann man die Steckdose natürlich vorrangig für Anwendungen benutzen bei denen man anwesend ist und man das Ergebnis direkt selber sehen kann).
Man kann sicherheitsweise 3 mal das Kommando senden :). -
Hi,
Super Idee, genau das was ich Suche.
ist es auch möglich mit Raspberry Remote einen Handsender auszulesen und den Empfänger dann damit zu schalten?
Habe von Intertechno die ITR-1500 und dort lässt sich leider nichts über Dip´s einstellen und muss daher den Umweg übers auslesen nehmen.
Mfg
-
ist es auch möglich mit Raspberry Remote einen Handsender auszulesen und den Empfänger dann damit zu schalten? `
Ich habe auf die Schnelle z.B. diese Seite gefunden.
https://www.sweetpi.de/blog/119/funkste … i-schalten
Da wird der Receiver ein einzige Mal fürs Auslesen der ID genutzt. Danach kann man ihn wieder abstecken. Wenn die Anleitung nicht ausreicht findest du bestimmt anhand einschlägiger Begriffe auch weitere Anleitungen. Wenn du es geschafft hast wäre es super, die für dich einfachste und zielführendste Anleitung mit ein paar Kommentaren hier zu posten.
Danke!
Lg
Marc
-
Hallo zusammen,
habe IO Broker auf Windows HomeServer laufen und es ähnlich umgesetzt.
Ein Raspberry Pi 1 als Sender konfiguriert. Wiring Pi installiert, einen Webserver und PHP installiert.
Auf dem Webserver (RPI) läuft ein PHP File, hier werden Variablen übergeben um die Funksteckdosen zu schalten.
Im IO Broker sende ich HTTPrequest an den Pi und schalte damit die Steckdosen.
Wenn Interesse besteht würde ich es hier mit allen Einzelheiten vorstellen.
Ich hatte vorher die Zustände in ein XML File geschrieben und über eine eigene Visualisierung angezeigt bis ich dann zu IO Broker kam
Grüße,
Torsten
-
Im IO Broker sende ich HTTPrequest an den Pi und schalte damit die Steckdosen.
Wenn Interesse besteht würde ich es hier mit allen Einzelheiten vorstellen. `
Sehr gerne! Dann hätte man mehrere Varianten direkt in einem Sammelthread. Da freuen sich zukünftige Suchende!
-
Wenn du es geschafft hast wäre es super, die für dich einfachste und zielführendste Anleitung mit ein paar Kommentaren hier zu posten. `
Ich habe es jetzt geschafft meine Intertechno ITR-1500 und meine Brennenstuhl RCS1000 in ioBroker einzubinden.
Verwende hierzu anstatt "Raspberry-Remote" die Software "Pilight" auf meinem RaspberryPi3, wo auch ioBroker drauf läuft.
Hilfreich hierbei war auch http://raspberry.tips/hausautomatisieru … tisierung/
Habe mir dazu auch pro Steckdose eine Variable in der CCU angelegt und pro Steckdose ein Javascript in ioBroker aktiviert und den Code von Marc.Matic etwas angepasst.
on('hm-rega.0.12345', function (obj) { current_state = getState("hm-rega.0.12345").val; if (current_state == "1") { exec('pilight-send -p kaku_switch -u 15888386 -i 2 -t'); } else { exec('pilight-send -p kaku_switch -u 15888386 -i 2 -t'); } });
kompatibele Geräte und weiter Infos unter https://wiki.pilight.org/doku.php/protocols
Dazu noch eine kleine Visualisierung in vis und schon lassen sich die Steckdosen bequem vom Tablet aus schalten.
Vorteil der Einbindung in einer Homematic Variable war für mich auch eine zeitliche Steuerung ohne Aufwand zu errichten,
passt bestens zur Weihnachtszeit um die Weihnachtsbeleuchtung automatisch zu schalten, erspart die analoge Zeitschaltuhr
Mfg
-
Hallo zusammen,
OK dann starte ich mal!
Was wird benötigt?
RPI
MX-05V 433MHz RF Funkmodul / Sender + Empfänger
Draht als Antenne
IO Broker
Als erstes richtet man sich den Sender (RPI) ein. Dazu gibt es im Netz eine gute Beschreibung:
https://alexbloggt.com/funksteckdosen-r … -pi-teil1/
Hier steht alles drin wie man den Pi erst einmal so hinbekommt, das er senden kann.
Als nächsten Schritt eine php Seite anlegen
"; } } else { echo "Keine Ausgang gesetzt!" . " "; } } else { echo "Kein Hauscode gesetzt!" . " "; } if(isset($_GET['hauscode']) && isset($_GET['ausgang']) && isset($_GET['zustand'])) { exec('sudo /root/raspberry-remote/./send ' . $hauscode . ' ' . $ausgang . ' ' . $zustand); echo ' ' . $hauscode . ' ' . $ausgang . ' ' . 'auf Zustand ' . $zustand .' geschaltet!'; } else { echo "Funksteckdose nicht geschaltet!"; } ?>
…und im HTTP Root als automatik_set_funk.php speichern.
Damit wäre der Pi fertig eingerichtet und kann als Sender arbeiten.
Wenn aus einem Browser seiner Wahl folgenden Link aufruft:
http://192.168.xxx.xxx/automatik_set_fu … &zustand=1
Natürlich mit der IP Adresse des RPI! Wird die jeweilige Steckdose geschaltet.
Entsprechend mit:
http://192.168.xxx.xxx/automatik_set_fu … &zustand=0
wieder aus geschaltet.
Wenn das funktioniert, ist der Pi fertig!
Kommen wir zu IO Broker:
var pfad = 'javascript.1.funksteckdosen.'; createState(pfad + 'Tauch_Pumpe_Schalter', { id: 'Tauch_Pumpe_Schalter', name: 'Tauch_Pumpe_Schalter', type: 'boolean', def: false }); createState(pfad + 'Tauch_Pumpe_Zustand', { id: 'Tauch_Pumpe_Zustand', name: 'Tauch_Pumpe_Zustand', type: 'boolean', def: false }); //######################################################################################################## var request = require ('request'); var url_on_Tauch_Hand = "http://192.168.xxx.xxx/automatik_set_funk.php?hauscode=00000&ausgang=4&zustand=1"; var url_off_Tauch_Hand = "http://192.168.xxx.xxx/automatik_set_funk.php?hauscode=00000&ausgang=4&zustand=0"; //######################################################################################################## on(pfad + 'Tauch_Pumpe_Schalter' , function (obj_1) { if (obj_1.state.val) { request(url_on_Tauch_Hand); setState(pfad + "Tauch_Pumpe_Zustand", true); log("Tauch an"); } if (!obj_1.state.val) { request(url_off_Tauch_Hand); setState(pfad + 'Tauch_Pumpe_Zustand', false); log("Tauch aus"); } });
IO Broker wäre dann auch fertig!
Was mir aufgefallen ist, das die Reichweite der Funksteckdosen zu wünschen übrig lässt und hier kommt der Empfänger ins Spiel. Den Empfänger der Funksteckdose ausgelötet und den oben genannten Empfänger angelötet und mit einer Antenne nach außen versehen.
Reichweite geht nun aus dem Keller bis raus in das Carport Entfernung ca 50m ohne Fehlschaltungen.
Dann habe ich mir gleich noch ein paar weitere umgebaut und bin zufrieden damit. Ein Nachteil wurde ja schon erwähnt, das man den Zustand nicht zurück gemeldet bekommt. Aber ein wenig hilft ja da der Zustandsschalter im IO Broker und natürlich wenn man 3 Sendebefehle hintereinander schickt, sollte es auch gehen.
Grüße,
Torsten
-
Man kann sicherheitsweise 3 mal das Kommando senden :). `
Müsste das ganze dann so aussehen?on('hm-rega.0.59626', function (obj) { current_state = getState("hm-rega.0.59626").val; if (current_state == "1") { exec('/opt/raspberry-remote/./send 11101 1 1'); exec('/opt/raspberry-remote/./send 11101 1 1'); exec('/opt/raspberry-remote/./send 11101 1 1'); } else { exec('/opt/raspberry-remote/./send 11101 1 0'); exec('/opt/raspberry-remote/./send 11101 1 0'); exec('/opt/raspberry-remote/./send 11101 1 0'); } });
-
Müsste das ganze dann so aussehen? `
Hab es so getestet, das klappt aber scheinbar nicht wirklich weil die Befehle zu schnell hintereinander kommen. Habe es daher so gemacht:
on('hm-rega.0.59626', function (obj) { current_state = getState("hm-rega.0.59626").val; if (current_state == "1") { exec('/opt/raspberry-remote/./send 11101 1 1'); setTimeout(myDelay1_1, 3000); setTimeout(myDelay1_2, 6000); } else { exec('/opt/raspberry-remote/./send 11101 1 0'); setTimeout(myDelay0_1, 3000); setTimeout(myDelay0_2, 6000); } }); function myDelay1_1() { exec('/opt/raspberry-remote/./send 11101 1 1'); } function myDelay1_2() { exec('/opt/raspberry-remote/./send 11101 1 1'); } function myDelay0_1() { exec('/opt/raspberry-remote/./send 11101 1 0'); } function myDelay0_2() { exec('/opt/raspberry-remote/./send 11101 1 0'); }
-
….Sende- und Empfangsfehler können aber nicht mit einer Mehrfachsendung unterbunden werden. Da muß dann doch ein Hardwareupdate gemacht werden.
Grüße,
Torsten
-
Habe es daher so gemacht: `
Das lässt sich vereinfachen:var timer1 = null; var timer2 = null; function send(val) { exec('/opt/raspberry-remote/./send 11101 1 ' + val); } on('hm-rega.0.59626', function (obj) { send(obj.state.val); if(timer1) clearTimeout(timer1); if(timer2) clearTimeout(timer2); timer1 = setTimeout(function() {send(obj.state.val);}, 2000); timer2 = setTimeout(function() {send(obj.state.val);}, 6000); });
-
Hallo zusammen,
habe mich jetzt ein wenig in MQTT eingelesen und ein neues Projekt gestartet. Funksteckdosen über Raspberry Pi schalten bleibt aber die Kommunikation über IO Broker und MQTT zu realisieren.
Hat den Charme das man den Pi über W-Lan platzieren kann wo man möchte und der komplette Datenaustausch über MQTT realisiert wird. Unter anderen gibt es die Funktion verschiedene 433Mhz Sende- Protokolle zu implementieren um auch andere Sachen wie z.B. 433Mhz Funkklingel oder Wetterstation abzufangen und im IO Broker als Event zu bekommen.
Grüße,
Torsten
-
Hallo forum Gemeinde,
Ich bin neu in der Materie iobroker und habe so meine Probleme mit den Steckdosen.
Ich bekomme es einfach nicht hin. Folgende Ausgangslage:
Insgesamt laufen 3 raspberry.
1. iobroker inkl. Vis
2. homematic
3. VPN und raspberry Remote für die 433mhz Dosen.
Zur Zeit schalte ich die Steckdosen per Programm in der CCU, sprich für jeden Zustand(Ein/ Aus) 3ein gesondertes Programm, bedeutetet dass ich auch pro steckdose zwei Buttons in der VIS anlegen muss,
Welche das Programm der CCU ausführen.
Ich habe so keine Zustand der Dose( Steckdosen liegen imoptimalen bereich, schalten immer beim ersten mal), diesen möchte ich aber darstellen.
Ich benötige da mal eure Hilfe. Wie löse ich das Problem?
Edit: ich habe es hinbekommen….:-)
Ich habe es etwas anders, mit leichtem Umweg über die CCU geschaltet.
-
Ahoi!
Dann muss ich meinen Senf auch mal zu den Billigsteckdosen geben
Unten mein Script das auch gleich die Objekte in iobroker mit erzeugt.
Welches Objekt welchen Code versenden soll steht im Dictionary PwrplugConfig
!
/* System Baumarktsteckdosen Verbindung zwischen Baumarktsteckdose und iobroker Signal ! 09.01.2017: Initial Script: Script defines variables to control stupid powerplugs you need a script to send the code via cheap 433MHz transmitter, soldered on gpio pins on raspberry */ ! //Dictionary of all used power plugs const Topicfolder = 'Baumarktsteckdosen' var PwrplugConfig ={ 'SZ_4' :'11111 4', 'SZ_Licht_Links' :'11111 2', 'SZ_Licht_Rechts' :'11111 1', 'SZ_TV' :'11111 3', 'WG_Hi_Rechts' :'00101 4', 'WG_Licht_Links' :'00101 3', 'WG_Radio' :'00101 1', 'WG_Stehlampe' :'00101 2', 'WZ_4' :'01111 2', 'WZ_Licht_Rechts' :'01111 4', 'WZ_Standlicht' :'01111 3', 'WZ_TV' :'01111 1' }; ! var timer1 = null; var timer2 = null; ! //############################### One Time execution on scriptstart####################################### //create all variables if not exist for (var item in PwrplugConfig) { createState(Topicfolder+'.'+item,0, {read: true,write: true,type: 'boolean', name: 'Eine Steckdose',desc: ''}); } ! //############################### Event execution ####################################### //subscribe all tags in topicfolder var cacheSelectorState = $('^javascript.0.'+Topicfolder+'.*/r>); cacheSelectorState.on( function(obj) { var lastpkt = obj.id.lastIndexOf('.'); var substring=obj.id.substring(lastpkt+1); log('Steckdose geschaltet:'+substring+'['+PwrplugConfig[substring]+'] = '+ obj.state.val); send(PwrplugConfig[substring]+' '+ obj.state.val); if(timer1) clearTimeout(timer1); if(timer2) clearTimeout(timer2); timer1 = setTimeout(function() {send(PwrplugConfig[substring]+' '+ obj.state.val);}, 500); timer2 = setTimeout(function() {send(PwrplugConfig[substring]+' '+ obj.state.val);}, 1000); }); ! function send(val) { exec('/sbin/send ' + val); } !
-
"; } } else { echo "Keine Ausgang gesetzt!" . " "; } } else { echo "Kein Hauscode gesetzt!" . " "; } if(isset($_GET['hauscode']) && isset($_GET['ausgang']) && isset($_GET['zustand'])) { exec('sudo /root/raspberry-remote/./send ' . $hauscode . ' ' . $ausgang . ' ' . $zustand); echo ' ' . $hauscode . ' ' . $ausgang . ' ' . 'auf Zustand ' . $zustand .' geschaltet!'; } else { echo "Funksteckdose nicht geschaltet!"; } ?>
…und im HTTP Root als automatik_set_funk.php speichern.
Damit wäre der Pi fertig eingerichtet und kann als Sender arbeiten.
Wenn aus einem Browser seiner Wahl folgenden Link aufruft:
http://192.168.xxx.xxx/automatik_set_fu … &zustand=1
Natürlich mit der IP Adresse des RPI! Wird die jeweilige Steckdose geschaltet.
Entsprechend mit:
http://192.168.xxx.xxx/automatik_set_fu … &zustand=0
wieder aus geschaltet.
Wenn das funktioniert, ist der Pi fertig! `
Hallo zusammen,
ich finde die Idee sehr interessant die Steckdosen per URL zu steuern.
sudo ./send 11111 4 1 funktioniert super bei mir. Wenn ich das PHP Skript einbinde wird leider der EXEC Befehl nicht ausgeführt, bzw schaltet die Steckdose nicht.
Bei mir sieht er folgend aus: exec('sudo ~/raspberry-remote/./send ' . $hauscode . ' ' . $ausgang . ' ' . $zustand);
Hat jemand eine Idee was ich hier noch falsch mache?
Danke VG Alex
-
Hallo zusammen,
wie muss das Skript eingebunden werden in ioBroker? JavaScript Engine?
VG Alex
Ahoi!
Dann muss ich meinen Senf auch mal zu den Billigsteckdosen geben
Unten mein Script das auch gleich die Objekte in iobroker mit erzeugt.
Welches Objekt welchen Code versenden soll steht im Dictionary PwrplugConfig
!
/* System Baumarktsteckdosen Verbindung zwischen Baumarktsteckdose und iobroker Signal ! 09.01.2017: Initial Script: Script defines variables to control stupid powerplugs you need a script to send the code via cheap 433MHz transmitter, soldered on gpio pins on raspberry */ ! //Dictionary of all used power plugs const Topicfolder = 'Baumarktsteckdosen' var PwrplugConfig ={ 'SZ_4' :'11111 4', 'SZ_Licht_Links' :'11111 2', 'SZ_Licht_Rechts' :'11111 1', 'SZ_TV' :'11111 3', 'WG_Hi_Rechts' :'00101 4', 'WG_Licht_Links' :'00101 3', 'WG_Radio' :'00101 1', 'WG_Stehlampe' :'00101 2', 'WZ_4' :'01111 2', 'WZ_Licht_Rechts' :'01111 4', 'WZ_Standlicht' :'01111 3', 'WZ_TV' :'01111 1' }; ! var timer1 = null; var timer2 = null; ! //############################### One Time execution on scriptstart####################################### //create all variables if not exist for (var item in PwrplugConfig) { createState(Topicfolder+'.'+item,0, {read: true,write: true,type: 'boolean', name: 'Eine Steckdose',desc: ''}); } ! //############################### Event execution ####################################### //subscribe all tags in topicfolder var cacheSelectorState = $('^javascript.0.'+Topicfolder+'.*/quote>); cacheSelectorState.on( function(obj) { var lastpkt = obj.id.lastIndexOf('.'); var substring=obj.id.substring(lastpkt+1); log('Steckdose geschaltet:'+substring+'['+PwrplugConfig[substring]+'] = '+ obj.state.val); send(PwrplugConfig[substring]+' '+ obj.state.val); if(timer1) clearTimeout(timer1); if(timer2) clearTimeout(timer2); timer1 = setTimeout(function() {send(PwrplugConfig[substring]+' '+ obj.state.val);}, 500); timer2 = setTimeout(function() {send(PwrplugConfig[substring]+' '+ obj.state.val);}, 1000); }); ! function send(val) { exec('/sbin/send ' + val); } !
` -
Hi
Sorry für die späte Antwort, ich war busy.
Ja lege ein neues Javascript in iobroker an und paste den text vom script oben dort rein.
Ich nehme an der Pfad zum send Befehl muss auch entsprechend angepasst werden.
Dann kommt es noch darauf an unter welchen user der iobroker läuft, denn normalerweise darf nur root auf die GPIO pins zugreifen.
Wenn du den send befehl als pi aufrufst, sollte das auch mit iobroker gehen.
Ich habe meinen send befehl etwas aufgepimpt, weil Der normalerweise den Code nur einmal sendet:
else { switch (command) { case 1: mySwitch.switchOn(systemCode, unitCode); usleep(300); mySwitch.switchOn(systemCode, unitCode); usleep(300); mySwitch.switchOn(systemCode, unitCode); usleep(300); break; case 0: mySwitch.switchOff(systemCode, unitCode); usleep(300); mySwitch.switchOff(systemCode, unitCode); usleep(300); mySwitch.switchOff(systemCode, unitCode); usleep(300); break; case 2: // 00001 2 on binary coded mySwitch.send("010101010001000101010001"); break; case 3: // 00001 2 on as TriState mySwitch.sendTriState("FFFF0F0FFF0F"); break; default: printf("command[%i] is unsupported\n", command); printUsage(); if (!multiMode) { return -1;
Das heisst mit dem Aufruf von send schickt der befejl das Kommando drei mal raus! Damit schalte ich bisher jede Steckdose gewissenhaft ein und aus
Hallo zusammen,
wie muss das Skript eingebunden werden in ioBroker? JavaScript Engine?
VG Alex `
-
Hi
Sorry für die späte Antwort, ich war busy.
Ja lege ein neues Javascript in iobroker an und paste den text vom script oben dort rein.
Ich nehme an der Pfad zum send Befehl muss auch entsprechend angepasst werden. `
Danke für die Antwort. - Kein Problem.
Ich habe es auch als Script angelegt Allerdings erzeugt er mir keine Objekte in iobroker.
Verwendest du noch zusätzliche NPM Module? Oder hast du sonst etwas in den JavaScript Einstellungen noch eingestellt?
VG
-
Guck mal wie das Script funktioniert:
//Dictionary of all used power plugs
const <u>Topicfolder</u> = 'Baumarktsteckdosen'
var <u>PwrplugConfig</u> ={
'SZ_4' :'11111 4',
'SZ_Licht_Links' :'11111 2',
'SZ_Licht_Rechts' :'11111 1',
'SZ_TV' :'11111 3',
'WG_Hi_Rechts' :'00101 4',
'WG_Licht_Links' :'00101 3',
'WG_Radio' :'00101 1',
'WG_Stehlampe' :'00101 2',
'WZ_4' :'01111 2',
'WZ_Licht_Rechts' :'01111 4',
'WZ_Standlicht' :'01111 3',
'WZ_TV' :'01111 1'
};
var timer1 = null;
var timer2 = null;
//############################### One Time execution on scriptstart#######################################
//create all variables if not exist
for (var <u>item</u> in <u>PwrplugConfig</u>) {
createState(Topicfolder+'.'+item,0, {read: true,write: true,type: 'boolean',
name: 'Eine Steckdose',desc: ''});
}
Die FETT markierten Variablen werden hier verwendet.
Die For Schleife geht also für jeden Eintrag in PwrplugConfig hin und weist der Variablen item den nächsten Wert zu und erstellt darauf die Variablen.
in der Funktion createItem baue ich den string zusammen, wie er denn dann heissen soll: Baumarktsteckdosen.SZ_4 usw.
Da das Script vom Adapter javascript ausgeführt wird, findest du das dann unter javascript.0. Baumarktsteckdosen.SZ_4
Das sollte so funktionieren… Findest du Fehlermeldungen im log?
` > Danke für die Antwort. - Kein Problem.
Ich habe es auch als Script angelegt Allerdings erzeugt er mir keine Objekte in iobroker.
Verwendest du noch zusätzliche NPM Module? Oder hast du sonst etwas in den JavaScript Einstellungen noch eingestellt?
VG `