@wendy2702
Dann fang ich mal an.
Hab zwei verschiedene Modi (light/dark)
@wendy2702
Dann fang ich mal an.
Hab zwei verschiedene Modi (light/dark)
@funkytown
Sollte über die Dateien einbindbar sein
und dann mit der URL
http://<ip_iobroker>:8082/ical.0/entsorgungsdaten2025.ics
@walter-white
Falls Du es brauchen kannst anbei ein Blockly-Script zum Importieren mit dem ich automatisch für alle in der App erstellten Programme Datenpunkte für deren Aktivierung anlege.
vacuum.program.xml
Wenn ein neues Programm dazukommt einfach das Script neu starten.
@myzerat
Vielleicht wäre das hier ein Ansatz
Bei den Funktionen in den Objekten müsstest Du nur bei den einzelnen Datenpunkten "Batteriestatus" hinterlegen.
(nicht verwirren lassen, bei mir steht da 'Batteriestatus_Prozent' weil's eine manuell angelegte Aufzählung ist)
Bei neuen Geräten dann einfach die Funktion mit angeben, der Rest läuft automatisch.
In der Nachricht werden aber nur die Geräte gezählt. Die Gerätenamen werden nicht ausgegeben.
PS
Natürlich müssen die "Batterien" zuerst bei den Aufzählungen hinterlegt werden
Das hintere "+" auswählen
und dann "BATTERIESTATUS"
@basti17683
Was normalerweise funktionieren sollte wäre bei den Influx-Einstellungen unter Alias beim Datenpunkt die alte Bezeichnung des Measurements einzutragen:
Dann sollte eigentlich in der InfluxDB dort weitergeloggt werden.
Kann es sein dass deshalb enpfohglen wird mit Alias zu arbeiten?
Damit wär's eindeutig einfacher. Neuen DP verknüpfen und fertig.
@pmayer sagte in cod.m ZigBee Coordinator (PoE/non-PoE) - made in Germany:
Nimm dir mal bitte die
.ota.bin
von https://github.com/codm/czc-fw/releases/tag/v2.0.0 und mach das über File Update.
Hatte das gleiche kleine Problem. Mit dem manuellen Upload hat's aber einwandfrei geklappt. Und im Anschluss noch die Zigbee-Firmware auf 20240710 hochgezogen. Das hat ohne Probleme funktioniert.
@kusselin sagte in Was sagt mir mal wieder diese Fehlermeldung?:
Ist das im Link oben von Matthias alles genau beschrieben?
Schau auch mal hier:
https://forum.iobroker.net/post/1144683
Du musst den linken Block gegen den rechten austauschen. Dann sollte wieder alles passen.
Wenn Du mit der manuell angelegten Variable result
gearbeitet hast (für Rückgabewerte) dann diese noch durch die vordefinierte Variable Data
ersetzen.
@ofbeqnpolkkl6mby5e13 sagte in Hilfe für Javascript Legastheniker und js v8.3.x:
Welches Fazit wollen wir nun ziehen?
Matthias @haus-automatisierung hat hier zwischenzeitlich einen Upgrade-Guide erstellt.
https://forum.iobroker.net/topic/74659/request-package-is-deprecated-please-use-httpget/25
So schaut des Code in JS aus
var objID, term, term_old, objID_sum, term_sum, ObjectID, path_pre, search_room, value, txt_original, txt_search, txt_switch, part1, txt_result, function2, datapoint, part2, name2, txt_search_length, position, store, path_sum, list_rooms, list_lights, active_sum_all, i, list_lights_txt, count, j;
// Erstelle DP je Raum
async function create_dp_boolean(objID, term, term_old) {
if (!existsObject(objID)) {
createState(objID, false, {
read: true,
write: true,
name: term_old,
type: "boolean",
def: false
});
await wait(1000);
}
}
// Erstelle DP für aktive Geräte
async function create_dp_number_sum(objID_sum, term_sum) {
if (!existsObject(objID_sum)) {
createState(objID_sum, 0, {
type: 'number',
read: true,
write: true,
name: term_sum
});
await wait(1000);
}
}
// Finde Raumname
async function rooms_extract(ObjectID) {
let room = getObject(ObjectID, 'rooms').enumNames[0]; if(typeof room == 'string') return room; return room.de;
}
// Liefere Ergebnis Zustand je Raum
async function write_datapoint(path_pre, search_room, value) {
// Entferne Sonderzeichen
datapoint = await changeText(String(search_room), 'ä', 'ae');
datapoint = await changeText(String(txt_result), 'ö', 'oe');
datapoint = await changeText(String(txt_result), 'ü', 'ue');
datapoint = await changeText(String(txt_result), 'ß', 'ss');
datapoint = await changeText(String(txt_result), ' ', '_');
objID = [path_pre,'.',datapoint].join('');
await create_dp_boolean(objID, txt_result, search_room);
setStateDelayed(objID, value, true, parseInt(((0) || '').toString(), 10), false);
}
// Entferne Sonderzeichen
async function changeText(txt_original, txt_search, txt_switch) {
part1 = '';
part2 = '';
txt_result = txt_original;
txt_search_length = txt_search.length;
position = txt_result.indexOf(txt_search) + 1;
while (position > 0) {
// Wenn nicht erste Zeichen im Text!
if (position > 1) {
part1 = txt_result.slice(0, position - 1);
}
part2 = txt_result.slice(((position + txt_search_length) - 1), txt_result.length);
txt_result = [part1,txt_switch,part2].join('');
position = txt_result.indexOf(txt_search) + 1;
}
return txt_result;
}
// Script
// >>> Name wählen !!!
function2 = 'Licht';
// >>> Name eintragen!!!
name2 = 'aktive Lichter';
// Erstelle Datenpunkt für aktive Geräte
// >>> Speicherort unter 0_userdata. einstellen
store = '0_userdata.0.Datenpunkte.Widgets';
path_pre = [store,'.',function2].join('');
path_sum = String(path_pre) + '.Active';
await create_dp_number_sum(path_sum, name2);
setStateDelayed(path_sum, 0, true, parseInt(((0) || '').toString(), 10), false);
// Trigger
// >>> functions nach = anpassen !!!
on({ id: [].concat(Array.prototype.slice.apply($('state[id=*](functions=light)'))), change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
console.log(name2);
list_rooms = [];
list_lights = [];
active_sum_all = 0;
// >>> functions nach = anpassen !!!
var i_list = Array.prototype.slice.apply($('state[id=*](functions=light)'));
for (var i_index in i_list) {
i = i_list[i_index];
list_rooms.push([await rooms_extract(i)]);
if (getState(i).val) {
list_lights.push([await rooms_extract(i)]);
active_sum_all = (typeof active_sum_all === 'number' ? active_sum_all : 0) + 1;
}
}
console.log(active_sum_all);
list_lights_txt = String(list_lights);
count = 0;
for (var j_index in list_rooms) {
j = list_rooms[j_index];
count = (typeof count === 'number' ? count : 0) + 1;
search_room = String(list_rooms[(count - 1)]);
if (list_lights_txt.indexOf(search_room) + 1 > 0) {
await write_datapoint(path_pre, search_room, true);
} else {
await write_datapoint(path_pre, search_room, false);
}
}
setStateDelayed(path_sum, active_sum_all, true, parseInt(((0) || '').toString(), 10), false);
});
@cocomp
Probier mal die Topics die Du beziehen willst einzutragen.
@razer2412 sagte in Adresse aus GPS Koordinaten ermitteln ?:
@micha-3
Das ist wahrscheinlich aus dem Beispiel von bahnuhr entnommen.
Fast korrekt
Hab das Beispiel von Codierknecht umgebaut
@micha-3
War nur zum Testen
Du müsstest das noch in einen Trigger auf die lat
und lon
Datenpunkte setzen und die jeweiligen Werte in die Variablen einlesen.
@nachtfuchs sagte in Neuer Adapter für Roborock-Staubsauger:
Verzeiht die Nachfrage,
hat keiner eine Idee?
Schau Dir mal mein Blockly hier an
Das erstellt Dir für die in der App gespeicherten Programme jeweils einen Datenpunkt mit dem Du das jeweilige Programm starten kannst.
@samson71 sagte in Cloud Adapter wird alle paar Minuten beendet:
Die Probleme sollten eigentlich nicht mehr auftreten.
Bei mir läuft's wieder
Danke
@skippy07 sagte in Cloud Adapter wird alle paar Minuten beendet:
Wann (Uhrzeit) trat der Fehler bei Dir auf?
Erstmalig auffällig
2025-03-18 14:38:28.998 - info: cloud.0 (525) Connection changed: disconnect
2025-03-18 14:39:29.005 - info: cloud.0 (525) Trying to connect as system.user.admin to cloud
2025-03-18 14:39:30.224 - info: cloud.0 (525) Connection changed: connect
Erstmalig Error
2025-03-18 15:33:44.818 - error: cloud.0 (525) Error while connecting to cloud: Error: websocket error
@skippy07
Könnte evtl. ein Serverproblem bei Free (.net) sein
@skippy07
Hab bei mir das selbe Problem
@jan_xx sagte in Roborock S7 einen Raum reinigen:
Hallo, kann mir jemand sagen wie das Blockly aussehen muss wenn ich meinen Roborock einen bestimmten Raum reinigen lassen will?
So beispielsweise
Reagiert wird auf die Auswahl eines Raums. Kann sein, dass Du den Raum zuerst auf false und dann wieder auf true stellen musst. Die anderen Räume sollten dann alle auf false gestellt und nach einer Sekunde wird der Startbefehl gesendet.
Edit: Blockly geändert
@sepp
Da gibt's beim Adapter bereits ein offenes Issue
https://github.com/copystring/ioBroker.roborock/issues/789
Vielleicht kannst Du Dich da ja mit dranhängen, es fehlt dort scheinbar noch das nötige Debug-Log.