Problem gelöst, wenn vielleicht auch mit Umweg
Expect-Pakete lokal nachinstalliert ("apt-get install expect")
Für jede der 4 Stati jeweils ein Script geschrieben. Script des Beispiels "Zuhause" (Abgelegt als "/home/pi/Documents/PresetZuhause"):
! ````
spawn telnet 192.168.100.3
set timeout 10
expect "Fritz!Box web password:"
send "<pass>\r"
expect "# "
send "echo 13,4 >/var/led\r"
expect "# "
send "echo 14,1 >/var/led\r"
expect "# "
send "echo 4,1 >/var/led\r"
expect "# "
send "echo 7,1 >/var/led\r"
expect "# "
send "exit\r"</pass>
- Den Aufruf des Scripts dann in Blockly-Script als "Aktionen"-"exec" (Kommando="expect -f /home/pi/Documents/PresetZuhause")
Komplettes "Blockly"-Script:
>! ````
on({id: "javascript.0.Homewizard.Preset.PresetHome"/*PresetHome*/, change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 0) {
exec('expect -f /home/pi/Documents/PresetZuhause');
} else if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 1) {
exec('expect -f /home/pi/Documents/PresetAbwesend');
} else if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 2) {
exec('expect -f /home/pi/Documents/PresetSchlafen');
} else if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 3) {
exec('expect -f /home/pi/Documents/PresetUrlaub');
} else {
setState("sayit.0.tts.text", "de-DE_CLOUD_Male;" + 'Fehlerhafter Preset Status');
console.error("sayIt[de-DE_CLOUD_Male]: " + 'Fehlerhafter Preset Status');
}
});
Es scheint so zu tun wie es soll. Weitere Tests werden es zeigen.
Vielleicht hat jemand noch eine bessere Lösung… (Als direktes Javascript/o.ähnl.)
Gruß Florian