So nach ein wenig basteln habe ich es nun geschafft von meinem Raspberry Pi 4 mit IOBroker die GPIO Pins an einem Raspberry Pi Zero zu steuern.
Sollte jemand ein gleiches oder ähnliches Projekt vorhaben, dann ist hier mein Code am Beispiel von 4 relais.
const pigpio = require('pigpio-client').pigpio({host: '192.168.187.65'}); // Hier die host IP Adresse des zu steuernden Raspis eintragen const ready = new Promise((resolve, reject) => { pigpio.once('connected', resolve); pigpio.once('error', reject); }); function wait(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } ready.then(async (info) => { // display information on pigpio and connection status console.log(JSON.stringify(info,null,2)); const relais1 = pigpio.gpio(2); // Hier die GPIO Pin Nummern eintragen const relais2 = pigpio.gpio(3); const relais3 = pigpio.gpio(4); const relais4 = pigpio.gpio(17); await relais1.modeSet('output'); await relais2.modeSet('output'); await relais3.modeSet('output'); await relais4.modeSet('output'); on({id: '0_userdata.0.StatusRelais1', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.StatusRelais1").val == true) { await relais1.write(0); } else if (getState("0_userdata.0.StatusRelais1").val == false) { await relais1.write(1); } }) on({id: '0_userdata.0.StatusRelais2', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.StatusRelais2").val == true) { await relais2.write(0); } else if (getState("0_userdata.0.StatusRelais2").val == false) { await relais2.write(1); } }) on({id: '0_userdata.0.StatusRelais3', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.StatusRelais3").val == true) { await relais3.write(0); } else if (getState("0_userdata.0.StatusRelais3").val == false) { await relais3.write(1); } }) on({id: '0_userdata.0.StatusRelais4', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.StatusRelais4").val == true) { await relais4.write(0); } else if (getState("0_userdata.0.StatusRelais4").val == false) { await relais4.write(1); } }) });Im Javascript Adapter habe ich "pigpio-client" hinzugefügt
8cbe1cdb-5d53-4cb2-8cf9-ef429a8060d8-image.png
Auf dem Raspberry Zero habe ich folgende Befehle ausgeführt
sudo apt install pigpioUnd damit der Dienst auch bei einem Neustart automatisch startet (Achtung, es können aus dem Netzwerk von allen IP Adressen die GPIOs gesteuert werden)
sudo systemctl enable pigpiodIch für meinen Teil werde nun einen USB to Ethernet Adapter bestellen damit ich den Raspberry Zero über LAN erreichen kann auf Grund der Distanz und dann die restlichen 6 Relais in den Code einfügen.