@oliverio
Perfekt, Merci!
Ich hab den code entsprechend angepasst und nun funktioniert es Beim starten klackt alles kurz und die Relais sind aus.
Ich hab den Beitrag oben nochmal mit dem fertigen Code aktualisiert.
LG
@oliverio
Perfekt, Merci!
Ich hab den code entsprechend angepasst und nun funktioniert es Beim starten klackt alles kurz und die Relais sind aus.
Ich hab den Beitrag oben nochmal mit dem fertigen Code aktualisiert.
LG
@oliverio
Kein Problem, du bist ja nicht dazu verpflichtet mir zu helfen und ich bin sehr dankbar für die Denkanstöße von Dir die letztendlich zum Ergebnis geführt haben
Die Lösung für den compile Fehler war einfach, es lag an den Klammern... Da ich nicht vertraut mit Javascript bin, wusste ich auch nicht was es mit den Klammern so auf sich hat. Erst mit ein bissel rumspielen hab ich es dann verstanden und gesehen dass er die zugehörigen Klammern dann auch entsprechend hervorhebt wenn man die "schließende" Klammer setzt.
Mein code oben ist aber bereits mit den richtig gesetzten Klammern.
Nun muss ich nur noch eine Sache herausfinden, evtl. hast du da noch einen Tipp.
Und zwar wenn ich das Script starte, springen alle Relais erstmal direkt an, sprich die Wasserventile würden direkt alle aufgehen... Gibt es eine Möglichkeit am Anfang alle Zustände beim Start des Scriptes generell erstmal auf false zu setzen??
Danke Dir!
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');
await relais1.write(1); // Schaltet die Relais beim Starten ab
await relais2.write(1);
await relais3.write(1);
await relais4.write(1);
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
Auf dem Raspberry Zero habe ich folgende Befehle ausgeführt
sudo apt install pigpio
Und 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 pigpiod
Ich für meinen Teil werde habe das ganze auf meinem Raspberry Pi Zero W mit einem Ethernet Modul realisiert um das ganze über LAN zu realisieren (https://amzn.eu/d/hx59ed6)
Übrigens hat es sich bei mir bewährt immer erst den Raspberry zu starten und nach einer kurzen Wartezeit das Script zu starten. Sonst hatte ich manchmal das Problem dass keine Verbindung zwischen IOB und dem Pi hergestellt wurde.
@oliverio
So mit Urlaub und dann wieder zurück an die Arbeit hat es leider etwas gedauert...
Ich hab jetzt mal ein bissel rumgespielt und ein vorhandenes Blockly script in js umgewandelt um zu sehen wie das dann aussieht mit dem on Befehl.
Wäre folgendes dann richtig:
const pigpio = require('pigpio-client').pigpio({host: '192.168.187.105'});
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(4);
const relais2 = pigpio.gpio(5);
await relais1.modeSet('output');
await relais2.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(1); // Hier stand bei blockly sonst setState("0_userdata.0.Beispiel id", 0);
} else if (getState("0_userdata.0.StatusRelais1").val == false) {
await relais1.write(0);
}
});
Auf dem remote Pi hab ich über raspi-config remote GPIO aktiviert.
Wenn ich das js Script im IOB auf meinem Host starte, bekomme ich jedoch:
error javascript.0 (19186) script.js.Sonstige.Remotetest compile failed: at script.js.Sonstige.Remotetest:33
Hab ich etwas vergessen?
Danke Dir!
@oliverio
Danke Dir für Deine Hilfe!
Ich habe mir die Seite nochmal angeschaut zusammen mit deinen Kommentaren und versuche das ganze nun zu verstehen und umzusetzen.
Da ich bisher bis auf ein Script (Copy-paste) nur blockly Scripte benutze, bin ich mit Javascript jedoch leider nicht so vertraut.
Von dem Beispielscript welches du einkopiert hast bräuchte ich Zeile 16-21 und 31-39 nicht, da ich ja nur schalten will, sprich diese lasse ich weg.
Und ich könnte dann zB folgendes nutzen:
const relais1 = pigpio.gpio(4);
const relais2 = pigpio.gpio(5);
await relais1.modeSet('output');
await relais2.modeSet('output');
//usw
Soweit richtig?
Unter Objekte erstelle ich dann entsprechende Datenpunkte zu den jeweiligen Relais als boolean/state.
Du meintest bei Instanz zusätzliche node-module (Bei mir steht npm module) entsprechend die Bibliothek hinzufügen, sprich dort einfach "pi-gpio" eintragen? (Jedenfalls gab es keine Fehlermeldung dabei)
Aber wie schaffe ich es nun dass das Javascript auf eine Änderung eines Datenpunktes in IOB auf True wartet und dann das passende relais1 auf relais1.write(1) setzt?
Ich verstehe noch nicht ganz wo dort die Verknüpfung ist.
@geschild
Die Seite hatte ich auch schon aber ich bekomm den 23017 nicht zum Laufen...
Nachdem ich es mit verschiedenen ESPs probiert habe und auch den MCP getauscht habe, hab ich es damit aufgegeben.
Und warum ich eine LAN Verbindung benötige: Wegen der Entfernung. An der Stelle an der der entfernte Controller/RasPi platziert werden soll, ist nur ein schwaches Wlan Signal und eine Netztwerkdose ist bereits vorhanden.
@oliverio
Danke Dir für die verschiedenen Varianten. Die Seite in der die Vorgangsweise mit python erklärt wird hatte ich auch gesehen, jedoch verstehe ich nicht ganz wie ich das mit IObroker umsetzen kann.
Müsste ich dann nicht für jeden Pin den ich am Pi steuern möchte je ein ON.py und OFF.py script erstellen und diese dann aus IObroker heraus starten? Ich möchte insgesamt 10 GPIO Pins auf dem Raspi2 von IOB auf Raspi1 ansteuern, sprich das wären dann 20 python Dateien?!
Sorry das ich so doof Frage aber ich steh echt auf dem Schlauch
@geschild Vielen Dank für den Tipp. Das hatte ich allerdings schon probiert mit einem MCP23017 und einem ESP32 ETH01 (Wegen dem Lan Anschluss) und habe es nicht zum laufen bekommen mit ESP Easy.
Ich hab mir auch die Anleitung angeschaut die Du verlinkt hast, aber da kommen bei mir direkt diverse Fragezeichen. So weit reichen meine Kenntnisse mit dem ESP nicht um das umzusetzen geschweige denn über IOBroker dann anzusteuern
Gibt es keine Möglichkeit einen Raspberry Zero zu nehmen? Dort hätte ich genug GPIOs und kann über USB einen LAN Anschluss realisieren.
Hallo,
Ich hoffe ich bin hier richtig mit dem Thema...
Seit einigen Jahren betreibe ich IOB auf einem Pi, hab mehrere ESP32 im Einsatz, lese über MQTT Feuchtigkeitssensoren aus und steuere GPIO pins eines ESP mit Blockly über HTTP requests.
Nun stoße ich aber an meine Grenzen:
Für ein Bewässerungsprojekt brauche ich mehr GPIO Pins als der ESP hergibt. Daher dachte ich an einen Pi Zero den ich noch rumliegen hab.
Jedoch suche ich seit Tagen nach einer Lösung um dessen Pins "fern zu steuern" vom IOB, da dieser an einem anderen Ort steht, aber im gleichen Netzwerk.
Kennt jemand eine Anleitung (Englisch oder Deutsch) die genau erklärt wie man das realisieren kann?
Ich hab einiges gefunden wo Leute schreiben sie haben das ebenfalls über MQTT geschafft mit paho mqtt oder über einen webserver der auf dem Zero läuft und wohl auch irgendwie mit Node red. Allerdings wurden wenn dann nur die Themen leicht angeschnitten oder die Anleitung war veraltet und die verwendeten Scripte gingen auf Grund veralteter Adapter nicht mehr zu implementieren.
Prinzipiell wäre so etwas hier ausreichend, allerdings ist das auf einem pico Pi und funktioniert bei mir auf dem Zero nicht:
https://www.youtube.com/watch?v=AK8UYh7pMGM
Der Weg ist mir an sich egal, wichtig wäre das Ziel und dass es zuverlässlich läuft.
Vielen Dank im Voraus!
LG
Phillip
@jpgorganizer
Danke Dir für den Tipp! Könnte daran liegen, nun kann ich aber kein Javascript
Aber man kann sich ja den code anzeigen lassen.
on({id: '0_userdata.0.Bewaesserung.Sektor5_Auffahrt.Bewässern_an', change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("0_userdata.0.Bewaesserung.Automatische_Bewässerung_Status").val == false && getState("0_userdata.0.Bewaesserung.Sektor5_Auffahrt.Bewässern_an").val == true) {
setState("smartgarden.0.LOCATION_ef63c465-2D3bda-2D47bd-2D8a34-2D10dd3c2c0ec9.DEVICE_39ce4af6-2D066b-2D4d95-2D91ff-2D995d69e2bf51.SERVICE_VALVE_39ce4af6-2D066b-2D4d95-2D91ff-2D995d69e2bf51.duration_value"/*duration_value*/, getState("0_userdata.0.Bewaesserung.Sektor5_Auffahrt.Bewässerungsdauer").val, true);
} else if (getState("0_userdata.0.Bewaesserung.Sektor5_Auffahrt.Bewässern_an").val == false) {
setState("smartgarden.0.LOCATION_ef63c465-2D3bda-2D47bd-2D8a34-2D10dd3c2c0ec9.DEVICE_39ce4af6-2D066b-2D4d95-2D91ff-2D995d69e2bf51.SERVICE_VALVE_SET_39ce4af6-2D066b-2D4d95-2D91ff-2D995d69e2bf51-3Awc.stop_all_valves_i"/*stop_all_valves_i*/, 'STOP_UNTIL_NEXT_TASK', true);
}
});
//JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9leHQlMjIlMjBpZCUzRCUyMmklNjBXUUclNUJaJTJGdyUyRnJoMiU2MCUyNVBLWiUzQlElMjIlMjB4JTNEJTIyODglMjIlMjB5JTNEJTIyNjMlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBpdGVtcyUzRCUyMjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRW5lJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBQ0tfQ09ORElUSU9OJTIyJTNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQwJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMmZpZWxkX29pZCUyMiUyMGlkJTNEJTIyKVJQaUhTOSUzQSU1QiUyNU1TJTJDJTYwYyU2MCUyQ3RiJTNBJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFMF91c2VyZGF0YS4wLkJld2Flc3NlcnVuZy5TZWt0b3I1X0F1ZmZhaHJ0LkJldyVDMyVBNHNzZXJuX2FuJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyTVNTKGdTTyo2WkpIYTNqJTNGKm1rISUyMiUzRSUzQ211dGF0aW9uJTIwZWxzZWlmJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfb3BlcmF0aW9uJTIyJTIwaWQlM0QlMjIlNDAlN0NIYzglMkMoJTNBbEIlM0R6V2w2UVklNUVxcCUyMiUyMGlubGluZSUzRCUyMmZhbHNlJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VBTkQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjIlM0YoWlZBall5NyUyRlI1dyUyNCUzQVZmJTdCS1YlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJyJTJCSTE5JTI1eSU2MCUyNCUzQUVXJTNGazJVc3klNUQqJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkJld2Flc3NlcnVuZy5BdXRvbWF0aXNjaGVfQmV3JUMzJUE0c3NlcnVuZ19TdGF0dXMlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIydCgqVjQ0RSUyQ3NkJTJGTV9wQn5+Lm9nJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJkJTJDaXl3ISUyRkhPUyUzRFpyJTNCfmJGUiU3Q1ElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJPJTIzSiU0MCU1QjlYaX4lM0ZPV0tDeTh6ZzhvJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkJld2Flc3NlcnVuZy5TZWt0b3I1X0F1ZmZhaHJ0LkJldyVDMyVBNHNzZXJuX2FuJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMkUlNUR2SiU1QmR5TnIlM0YlM0JOTGJHNU1fJTJCViUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydXBkYXRlJTIyJTIwaWQlM0QlMjIlMkIlMkJTZHB2dnJvJTNGQ3glMkZLQS4lNDBiX2UlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VzbWFydGdhcmRlbi4wLkxPQ0FUSU9OX2VmNjNjNDY1LTJEM2JkYS0yRDQ3YmQtMkQ4YTM0LTJEMTBkZDNjMmMwZWM5LkRFVklDRV8zOWNlNGFmNi0yRDA2NmItMkQ0ZDk1LTJEOTFmZi0yRDk5NWQ2OWUyYmY1MS5TRVJWSUNFX1ZBTFZFXzM5Y2U0YWY2LTJEMDY2Yi0yRDRkOTUtMkQ5MWZmLTJEOTk1ZDY5ZTJiZjUxLmR1cmF0aW9uX3ZhbHVlJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJlUlopSDlNJTQwNWppRyUyMyUyQ2JvZiUyMzZ5JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkJld2Flc3NlcnVuZy5TZWt0b3I1X0F1ZmZhaHJ0LkJldyVDMyVBNHNzZXJ1bmdzZGF1ZXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMkVuZ2hjQTElNUQlNUIlMkZSVDNLNiUzQiUzQjl4biUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMmQobk1OJTdDJTQwKEhJfmwlM0RHYnEyfjIlMkIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0UwX3VzZXJkYXRhLjAuQmV3YWVzc2VydW5nLlNla3RvcjVfQXVmZmFocnQuQmV3JUMzJUE0c3Nlcm5fYW4lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyWTQlM0QlMkYlNUUlMjQyKlpBYyU3QjI2JTNET08lMjMlM0ElM0QlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnVwZGF0ZSUyMiUyMGlkJTNEJTIyJTI1aSUzQlJfNklxJTNELTQtbSUzQiUyQyUyQyUyM1olMjQlNUQlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VzbWFydGdhcmRlbi4wLkxPQ0FUSU9OX2VmNjNjNDY1LTJEM2JkYS0yRDQ3YmQtMkQ4YTM0LTJEMTBkZDNjMmMwZWM5LkRFVklDRV8zOWNlNGFmNi0yRDA2NmItMkQ0ZDk1LTJEOTFmZi0yRDk5NWQ2OWUyYmY1MS5TRVJWSUNFX1ZBTFZFX1NFVF8zOWNlNGFmNi0yRDA2NmItMkQ0ZDk1LTJEOTFmZi0yRDk5NWQ2OWUyYmY1MS0zQXdjLnN0b3BfYWxsX3ZhbHZlc19pJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyaGR1cW5UJTdCai5KJTNCJTNEYWklNUQqaihVbiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VTVE9QX1VOVElMX05FWFRfVEFTSyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
Da steht nirgends etwas mit ack=false... Oder muss ich das manuell irgendwo eintragen?
LG
Hi zusammen,
ich komme leider derzeit nicht weiter beim Erstellen eines Scriptes um einen Smart Water Control von Gardena über Blockly anzusteuern. Das Gardena System selbst läuft und funktioniert über die App. Die Smartgarden Instanz ist installiert und funktioniert ebenfalls.
Unter Objekten wurde das Gerät auch hinzugefügt mit allen Datenpunkten. Wenn ich manuell unter Objekte den Punkt "duration_value" bearbeite und 60 oder 120 beispielsweise eintrage, öffnet das Ventil auch und wenn ich unter "stop_all_valves_i" STOP_UNTIL_NEXT_TASK eingebe, dann schließt das Ventil auch.
Soweit so gut, nun will ich aber ein Script haben, welches die Werte entsprechend einträgt, wenn ich über meine vis den Schalter bediene. Egal wie ich das Blockly script anlege, die datenpunkte duration_value und stop_all_valves werden zwar entsprechend aktualisiert, aber das Ventil reagiert in dem Fall nicht, obwohl Blockly nun das gleiche dort einträgt wie ich zuvor manuell. Ich habe es schon mit verschiedenen Bausteinen probiert...
steuere Object ID mit..., aktualisiere Object ID mit...
Da habe ich dann auch verschiedene Sachen probiert, ich wollte eigentlich dass er die Zahl nimmt die in einen weiteren Datenpunkt geschrieben wurde, als das nicht ging habe ich noch die Bausteine Text"60" und danach Zahl"60" probiert, immer das gleiche....
Hier ein screenshot des kleinen Scriptes:
Was mache ich verkehrt?!?! Ich hoffe es kann mir jemand helfen, anscheinend stelle ich mich etwas doof an.
Danke euch!