NEWS
HTML Tabelle für Shelly Device Übersicht
-
ja- wenn man beide tabellen sonoff und shelly hat - ich bin noch dabei, den fehler zu suchen - hat man beide, liegt es an der reihenfolge, was für eine tabelle als erstes als widget in die vis eingefügt wurde - die als zweite eingefügte tabelle hat dann das "leer-sein-syndrom"
bei dir mit iqontrol ist es einfach in der vis ein 2tes project z machen, da du die vis ja nr für diese tabellen nutzt - die "wahrhaftigen" vis nutzer, wollen eigentlich kein weiteres project definieren
ich such mal weiter
wenn man 3 dieser tabellen hat - es scheint immer die zu letzt eingefügte tabelle zu sein
-
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
bei dir mit iqontrol ist es einfach in der vis ein 2tes project z machen, da du die vis ja nr für diese tabellen nutzt - die "wahrhaftigen" vis nutzer, wollen eigentlich kein weiteres project definieren
jup, da haste recht. für mich ist vis nur eine "krücke" um die listen vernünftig verwenden zu können.
btw: @s-bormann hat seit gestern auch listen eingebaut. mal schauen, was die können... -
es gibt ein neues script auf github
https://github.com/liv-in-sky/html-script-shelly---iobroker
dort können jetzt das sonoff und shelly script gleichzeitig in einer view/projekt genutzt werden
du brauchst das update nicht unbedingt machen, du hast ja getrennte projekte - es ist aber auch der refresh knopf, wenn was in der suche steht, bereinigt worden
ps: das sonoff script hat auch ein update bekommen
https://github.com/liv-in-sky/sonoff-iobroker-scriptbei beiden solltst du die settings rüberkopieren können - dort ist nichts verändert worden
-
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
@da_Woody
du brauchst das update nicht unbedingt machen, du hast ja getrennte projekte - es ist aber auch der refresh knopf, wenn was in der suche steht, bereinigt worden
ps: das sonoff script hat auch ein update bekommen
https://github.com/liv-in-sky/sonoff-iobroker-script
bei beiden solltst du die settings rüberkopieren können - dort ist nichts verändert worden -
@liv-in-sky
beim shelly-Adapter wurde in der Version 6.0.0 die uptime auf Sekunden (number) umgestellt, wäre es möglich, dies im Script zu berücksichtigen?
Aktuell bekomme ich folgenden Fehler:javascript.0 2022-07-07 20:13:30.503 error at script.js.common.Shelly-Übersicht:182:37 javascript.0 2022-07-07 20:13:30.502 error Error in callback: TypeError: val[3].replace is not a function
PS: Ich nutze nicht die letzte Version, somit wird die Zeilennumer beim error nicht vergleichbar sein
-
da brauche ich mehr info :
nutzt du das neue script von github oder das script, was hier im ersten post steht?
wie sieht der datenpunkt jetzt genau aus - ich habe keinen shelly adapter installiert - zeig mal ein bild, was im dp steht - wurde da noch mehr geändert ?
so richtig sinn macht die fehlermeldung eh nicht - egal in welcher version des scriptes - poste auch die zeilen um zeile 182 (+/- 3 zeilen) deines scriptes
-
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
nutzt du das neue script von github oder das script, was hier im ersten post steht?
naja, hat er ja geschrieben:
PS: Ich nutze nicht die letzte Version, somit wird die Zeilennumer beim error nicht vergleichbar sein
-
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
nutzt du das neue script von github oder das script, was hier im ersten post steht?
Nicht von github, es ist lauf header eine Version
//@liv-in-sky 2021 5.3.-08:11
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
wie sieht der datenpunkt jetzt genau aus - ich habe keinen shelly adapter installiert - zeig mal ein bild, was im dp steht - wurde da noch mehr geändert ?
Ganz unten die
uptime
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
so richtig sinn macht die fehlermeldung eh nicht - egal in welcher version des scriptes - poste auch die zeilen um zeile 182 (+/- 3 zeilen) deines scriptes
bitte sehr, ich hab´s ab der Schleife kopiert
$('shelly.*.*.name').each(function(id, i) { // hier eigene schleife definieren und den wert counter++ nicht vergessen !!! var ida = id.split('.'); // if(existsState(id) && existsState(id.replace("alive","uptime"))) { getState(id).val!=null && getState(id).val!="" && getState(id).val!=undefined ?val[0]=getState(id).val : val[0]=" --- "; if (existsState(id.replace("name","hostname"))) val[1]=getState(id.replace("name","hostname")).val; if (existsState(id.replace("name","online"))) val[2]=getState(id.replace("name","online")).val; if (existsState(id.replace("name","uptime"))) val[3]=getState(id.replace("name","uptime")).val; valueuptime=(Number(val[3].replace(/.*?([0-9][0-9]?)\:.*/,"$1"))*60*60)+ (Number(val[3].replace(/.*?[0-9][0-9]?\:([0-9][0-9]?)\:.*/,"$1"))*60)
Ich hoffe, du kannst damit etwas anfangen und bedanke mich vielmals für deine Unterstützung!!!
-
@da_woody
bist du schon auf der Shelly 6.0.0?
Falls ja, läuft dein script damit?
Falls nochmals ja, hast du das script von github - vermute ich - am laufen? -
@latzi nope, 6.0 hab ich gerade erst angeboten bekommen. allerdings verwende ich das script im mom nicht mehr. bin gerade device watcher am testen. https://github.com/ciddi89/ioBroker.device-watcher
brauch nur die übersicht.
schalten tu ich über iQontrol listen dingens. notfalls. normal in den räumen.
die listen sind da als widgets eingebunden, hab ich aber noch keine zeit gehabt das ansehentlicher zu machen.
bei meteoalarm hab ich schon in den einstellungen gebastelt. zeit und lust ist halt relativ...
-
@liv-in-sky Hallo, ich bekomme das Skript nicht ans Laufen. Bei Programmstart liefert er mir Fehler:
16:27:09.269 info javascript.0 (11145) Stop script script.js.Devicemanagement.Shelly_Watchdog 16:27:09.445 info javascript.0 (11145) Start javascript script.js.Devicemanagement.Shelly_Watchdog 16:27:09.507 info javascript.0 (11145) script.js.Devicemanagement.Shelly_Watchdog: registered 0 subscriptions, 0 schedules and 0 file subscriptions 16:27:09.509 error javascript.0 (11145) script.js.Devicemanagement.Shelly_Watchdog: TypeError: val[5].replace is not a function 16:27:09.509 error javascript.0 (11145) at script.js.Devicemanagement.Shelly_Watchdog:364:80 16:27:09.509 error javascript.0 (11145) at writeHTML (script.js.Devicemanagement.Shelly_Watchdog:341:23) 16:27:09.510 error javascript.0 (11145) at script.js.Devicemanagement.Shelly_Watchdog:781:5 16:27:09.510 error javascript.0 (11145) at script.js.Devicemanagement.Shelly_Watchdog:1467:3
Die DP werden unter unter javascript.0.xxx angelegt, aber HTMLTabelleVist ist "empty"
-
@latzi
es handelt sich also insgesamt um 3 verschiedene scripte - deines, das vom ersten post und eines auf githubich habe keinen alten scripte mehr aufgehoben- du mußt also dein ganzes script hier posten - ich kann momentan wenig zeit mit iobroker verbringen - daher könnte es etwas dauern - wenn überhaupt
wenn sich bei den dp etwas geändert hat, muss ich das zuerst abfragen, welche type der dp hat und auch das sortieren müßte wohl angeglichen werden. poste mal das script - ich überlege mir dann später, ob ich wirklich 3 verschiedene scripte pflegen will - solche nachträglichen datenpunkt-/adapteränderungen sind nervig@amg_666 welches script nutzt du und welche adapter version ?
-
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
@latzi
es handelt sich also insgesamt um 3 verschiedene scripte - deines, das vom ersten post und eines auf githubwenn ich heute abend zeit habe, versuch ich mal meine scripte zu reaktivieren... updates hab ich mal durchgezogen...
-
@liv-in-sky Ich benutze dieses Script und Shelly 6.0.0
-
dann hast du das selbe problem - der adapter hat wohl einen dp umdefiniert - daher könnte das script ein problem haben
-
@liv-in-sky sieht so aus. ich hab mal die fehlerhafte If-Anweisung rausgenommen, dann läuft er durch.
Im Skript ist das ab Zeile 362:// if (existsState(id.replace("id","uptime"))) { if(getState(id.replace("id","uptime")).val!=null && getState(id.replace("id","uptime")).val!="" && getState(id.replace("id","uptime")).val!=undefined ) { // val[5]=getState(id.replace("id","uptime")).val; // valueuptime=val[5].replace(/^([0-9]*?D)([0-9][0-9]:.*)/,"$1 $2" );// log(valueuptime) // valueuptime=valueuptime.replace(/^([0-9]*?:.*)/,"0D $1" ); //log(valueuptime) // val[5]=valueuptime // } // else{val[3]="noUptime"}} // log(valueuptime.toString()+" ----" +val[3].replace(/^(.+)D.+/,"$1")) // if(!Boolean(val[1])) valueuptime=val[5]="00:00:00"
Damit hat er natürlich in der Vis-Tabelle bei "UPTIME" jetzt undefined stehen, ich brauch den Wert aber nicht.
Wär natürlich super wenn du das gefixt kriegstDanke für den Support und die tolle Arbeit !
-
für die schönheit: einfach nach dem auskommentierten bereich den wert val[5] definieren mit
val[5]="na";
dann sollte wenigstens das undefined weg sein
ODER du machst folgendes statt dem auskommentierten bereich:
if (existsState(id.replace("id","uptime"))) { if(getState(id.replace("id","uptime")).val!=null && getState(id.replace("id","uptime")).val!="" && getState(id.replace("id","uptime")).val!=undefined ) { val[5]=String(getState(id.replace("id","uptime")).val);} else{val[5]="na";}} else{val[5]="na";}
-
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
der adapter hat wohl einen dp umdefiniert
glaub ich eher nicht, aber vllt ein tippfehler?
mal schauen, was @haus-automatisierung dazu meint... -
@liv-in-sky sagte in HTML Tabelle für Shelly Device Übersicht:
der adapter hat wohl einen dp umdefiniert - daher könnte das script ein problem haben
Nicht bewusst. Welchen denn?
-
@amg_666 sagte in HTML Tabelle für Shelly Device Übersicht:
ich hab mal die fehlerhafte If-Anweisung rausgenommen, dann läuft er durch.
Ahhh jetzt verstehe ich. Siehe Changelog für 6.0.0:
(klein0r) Breaking: Uptime is now a number (seconds since boot)
Das wurde sich hier gewünscht: https://github.com/iobroker-community-adapters/ioBroker.shelly/issues/604
Am besten im Script selbst umwandeln. Ihr könnt ja die alte Funktion (welche aus dem Adapter rausgeflogen ist) mit in das Script aufnehmen:
function uptimeString(uptime) { if (uptime < 0) { uptime = 0; } const timeDifference = new Date(uptime * 1000); const secondsInADay = 60 * 60 * 1000 * 24; const secondsInAHour = 60 * 60 * 1000; const days = Math.floor(timeDifference / (secondsInADay) * 1); let hours = Math.floor((timeDifference % (secondsInADay)) / (secondsInAHour) * 1); let mins = Math.floor(((timeDifference % (secondsInADay)) % (secondsInAHour)) / (60 * 1000) * 1); let secs = Math.floor((((timeDifference % (secondsInADay)) % (secondsInAHour)) % (60 * 1000)) / 1000 * 1); if (hours < 10) { hours = '0' + hours; } if (mins < 10) { mins = '0' + mins; } if (secs < 10) { secs = '0' + secs; } if (days > 0) { return days + 'D' + hours + ':' + mins + ':' + secs; } else { return hours + ':' + mins + ':' + secs; } }