@UncleSam vielen Dank!
Hat echt gut funktioniert, musste nur Redis installieren.
Hab sofort mal Backitup instelliert.
@UncleSam vielen Dank!
Hat echt gut funktioniert, musste nur Redis installieren.
Hab sofort mal Backitup instelliert.
@UncleSam gerne.
Ich habe die nicht lauffähige SD-Karte aus dem Pi genommen und mit Adapter am Mac verbunden.
Am Mac habe ich Homebrew und da osxfuse und ext4fuse installiert, damit das System das Dateisystem der SD-Karte lesen kann.
Von der Karte habe ich das iobroker-data Verzeichnis gesichert.
Dann Rasbian neu installiert und iobroker neu installiert. Dann wie Du sagtest, den Broker gestoppt und per Cyberduck (FTP) das gesicherte iobroker-data Verzeichnis über das auf dem Pi drübergeschrieben.
Da ich Redis laufen hatte, musste ich noch redis installieren (sudo apt-get install redis-server)
Dann iobroker start und alles lief.
Ich habe dann den Broker wieder gestoppt und zur Sicherheit
sudo curl -sL https://iobroker.net/fix.sh | bash -
ausgeführt.
Dann schnell noch ein manuelles backup und dann den Broker wieder gestartet und backupit installiert. Jetzt lege ich täglich Backups per ftp auf meiner qnap ab.
Hallo!
Ich hab mal ne Frage zu dem line history chart.
Ich nutze das chart für folgenden Fall, ich hab ein Script welches ich starte und dann möchte ich den Temperaturverlauf seit Start im Diagramm anzeigen, die Dauer kann so 1-2 Wochen sein. Die Temperatur-Werte speichert history laufend (auch wenn der Sensor aus ist). Jetzt interessieren mich die Werte nur ab start des Scripts. Wie kann ich den Startpunkt / -zeitstempel im Widget angeben?
In der Doku gibt es den Punkt "controlling time interval using object". Ich weiß nicht, ob das der richtige Punkt ist, und wie ich das Feld nutzen kann. Mir fehlt da ein Beispiel und ich bin ein Noob
Noch cooler wäre es, wenn ich per Datenpunt steuern könnte, welcher Zeitraum angezeigt wird. Also 1 Tag, dann 2 Tage, ... (Das Script könnte alle 24 Stunden den Wert hochsetzen. ).
Ich freue mich auf Eure Tipps.
Danke!
Hallo!
Ich habe ein Problem mit meinem Blockly-Script.
Ich habe an meinem Garagen-Tor einen Shelly, der über einen Reed-Sensor über den detach input ausliest, ob das Tor auf oder zu ist, und dann über den Switch den Motor schalten kann.
Dazu habe ich halt ein Script laufen, welches folgendes tun soll:
Wenn die Garage auf geht, will ich ne Whats-App "Garage ist offen"
Weiter soll alle 30 Minuten geprüft werden, ob die Garage noch offen ist, und eine Erinnerung gesendet werden.
Dazu habe ich in einem Intervall von 30 Minuten die Prüfung ob das Tor noch offen ist, und dann soll halt die WhatsApp gesendet werden. Geht das Tor zu, kommt eine Nachricht, dass das Tor zu ist.
Leider kommt die Garage offen Meldung nicht alle 30 Minuten, sondern mehrfach pro Minute, und ich verstehe ich warum.
Ich habe den Nachrichten extra ne 1 und 2 angehangen, damit ich weiß, welche versendet wird. Es ist die 2.
on({ id: 'shelly.0.SHSW-1#xxxx#1.Relay0.Input' /* Input / Detach */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if ((obj.state ? obj.state.val : "")) {
console.log('Garage geschlossen');
sendTo("whatsapp-cmb.0", "send", {
text: 'Garage geschlossen'
});
console.log("whatsapp-cmb: " + 'Garage geschlossen');
console.log('Garage geschlossen');
} else {
console.log('Garage ist offen');
sendTo("whatsapp-cmb.0", "send", {
text: 'Achtung, Garage ist offen-1'
});
console.log("whatsapp-cmb: " + 'Achtung, Garage ist offen-1');
Intervall = setInterval(async () => {
if (getState('shelly.0.SHSW-1#xxxx#1.Relay0.Input').val == false) {
console.log('Garage ist offen');
sendTo("whatsapp-cmb.0", "send", {
text: 'Achtung, Garage ist offen-2'
});
console.log("whatsapp-cmb: " + 'Achtung, Garage ist offen-2');
}
}, 1800000);
}
});
Würde mich sehr über Hilfe freuen, wie ich das Script anpassen kann, damit nicht jede Minute ne Nachricht kommt.
Danke!
@arteck Danke für die Hilfe.
Ich habe das Script jetzt laufen, muss jetzt nur noch die Startbedingungen anpassen. Das ist der aktuelle Stand:
on({id: 'senec.0.ENERGY.GUI_GRID_POW', change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_OperationState").val != 'BSH.Common.EnumType.OperationState.Run') {
if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_RemoteControlStartAllowed").val == true && getState("senec.0.ENERGY.GUI_GRID_POW").val < -100) {
setState("homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState"/*Energiezustand*/, 'BSH.Common.EnumType.PowerState.On');
setState("homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram"/*BSH_Common_Root_SelectedProgram*/, 'Dishcare.Dishwasher.Program.Auto2');
setState("homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram"/*BSH_Common_Root_ActiveProgram*/, 'Dishcare.Dishwasher.Program.Auto2');
}
}
});
@arteck
Nee ist er nicht, aber es gab keine Fehlermeldung im Log. Ich teste das heute Abend noch mal.
{
"type": "state",
"common": {
"name": "Energiezustand",
"type": "string",
"role": "indicator",
"write": true,
"read": true,
"unit": "",
"states": {
"BSH.Common.EnumType.PowerState.Off": "Aus",
"BSH.Common.EnumType.PowerState.On": "An"
}
},
"native": {},
"from": "system.adapter.homeconnect.0",
"user": "system.user.admin",
"ts": 1650880220130,
"_id": "homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState",
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
}
}
Ich hab das jetzt mal so angepasst:
on({id: 'senec.0.ENERGY.GUI_GRID_POW', change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_RemoteControlStartAllowed").val == true && getState("senec.0.ENERGY.GUI_GRID_POW").val < -100) {
setState("homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState"/*Energiezustand*/, 'An');
setState("homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram"/*BSH_Common_Root_SelectedProgram*/, 'Dishcare.Dishwasher.Program.Auto2');
setState("homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram"/*BSH_Common_Root_ActiveProgram*/, 'Dishcare.Dishwasher.Program.Auto2');
}
});
Testen kann ich das gerade nicht, weil einen höhere Instanz nicht mehr warten wollte, und die Maschine kurzerhand manuell gestartet hat.
Wo ist denn der Unterschied zwischen steuere und aktualisiere?
@arteck der Typ ist aber als String definiert, oder sehe ich das falsch?
Wenn ich das Objekt bearbeite steht da folgendes:
{
"type": "state",
"common": {
"name": "BSH_Common_Root_ActiveProgram",
"type": "string",
"role": "indicator",
"write": true,
"read": true,
"states": {
"Dishcare.Dishwasher.Program.Intensiv70": "Intensiv 70°",
"Dishcare.Dishwasher.Program.Auto2": "Auto 45-65°",
"Dishcare.Dishwasher.Program.Eco50": "Eco 50°",
"Dishcare.Dishwasher.Program.PreRinse": "Vorspülen",
"Dishcare.Dishwasher.Program.Quick65": "Express 65° - 1h",
"Dishcare.Dishwasher.Program.MachineCare": "Maschinenpflege"
}
},
"native": {},
"from": "system.adapter.homeconnect.0",
"user": "system.user.admin",
"ts": 1650857019858,
"_id": "homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram",
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
}
}
Wie gesagt den BSH_Common_Root_SelectedProgram
kann ich auch ändern, und der ist so konfiguriert:
{
"type": "state",
"common": {
"name": "BSH_Common_Root_SelectedProgram",
"type": "string",
"role": "indicator",
"write": true,
"read": true,
"states": {
"Dishcare.Dishwasher.Program.Intensiv70": "Intensiv 70°",
"Dishcare.Dishwasher.Program.Auto2": "Auto 45-65°",
"Dishcare.Dishwasher.Program.Eco50": "Eco 50°",
"Dishcare.Dishwasher.Program.PreRinse": "Vorspülen",
"Dishcare.Dishwasher.Program.Quick65": "Express 65° - 1h",
"Dishcare.Dishwasher.Program.MachineCare": "Maschinenpflege"
}
},
"native": {},
"from": "system.adapter.homeconnect.0",
"user": "system.user.admin",
"ts": 1650857019858,
"_id": "homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram",
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
}
}
Hallo zusammen!
Ich habe folgendes Problem: Ich kann die Spülmaschine nicht per Script starten. Wenn ich aber bei den Objekten unter
programs.active.BSH_Common_Root_ActiveProgram
aus dem Dropdown den Wert "Auto 45-65°" auswähle, dann startet die Maschine. Versuche ich das per Blockly, dann kommt folgender Fehler:
"programs/active/options: There is no program active."
Mein Script sieht so aus:
Bzw hier als Code:
on({id: 'senec.0.ENERGY.GUI_GRID_POW', change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_RemoteControlStartAllowed").val == true && getState("senec.0.ENERGY.GUI_GRID_POW").val < -100) {
setState("homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState"/*Energiezustand*/, 'An', true);
setState("homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram"/*BSH_Common_Root_SelectedProgram*/, 'Auto 45-65°', true);
setState("homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram"/*BSH_Common_Root_ActiveProgram*/, 'Auto 45-65°', true);
}
});
Was ich nicht verstehe ist, ich kann über setState den programs.selected.BSH_Common_Root_SelectedProgram
verändern, der in den Objekten auch als Dropdown angezeigt wird, aber bei active.BSH_Common_Root_ActiveProgram
kommt dann im Log der Fehler.
Da ich definitiv kein Programmierer bin, kann es auch daran liegen, dass ich das versuche falsch zu setzen. Ich bin für jeden Tipp dankbar!
Beste Grüße
@Jan1 ich wüsste nicht, wie ich das in der original FW machen kann. Der Shutter-Modus schaltet ja nach einer weile die Relais wieder aus, das soll hier ja nicht passieren.
Mit Tasmota habe ich mich nicht auseinander gesetzt, ich werd das hier mal so lassen, auf Dauer werde ich aber wohl Platz für einen Shelly beim Schalter machen, damit ich mit dem 2er auch zwei Geräte steuern kann.
@Jan1 Mit was? Kannst Du bitte etwas ausführlicher beschreiben, was Du meinst?