@zelly Dafür und noch vieles mehr ist der raspi gedacht und auch super ausreichend. Und wenn ich meine ersten versuche mit dem raspi 5 sehe das Teil ist echt schnell und ganz sicher noch für etliche jahre genug. genauso wie auch der Raspi 4
Große mengen an rechenarbeit und ähnliches, da sollte man evtl. auf bessere systeme ausweichen aber gerade für Experimentieren und Aufgaben wie Smarthome ist der raspi dicke genug
NEWS

Best posts made by teletapi
-
RE: raspi nicht erreichbar und iobroker führt keine skripte aus
-
RE: Grafana für Dummies
@tritor Also ich betreibe auf dem raspi 4 8Gb den Iobroker, Mosquitto, Influxdb 2.7.3 und grafana 10.2.2 Seid mittlerweile knapp 1 jahr ohne jedes problem. Bis auf kleinere Update fehler wegen des Beta status.
läuft mit m.2 64 Gb ssd in einem Argone one M.2 gehäuse.
Hier kann ich mittels USB kabel alle 8-14 tage ein komplett Backup der ssd machen und zusätzlich jeden tag per backitup ein Backup was ich mir per Filezilla auf den Rechner ziehe.
Als nächstes würde ich gerne den neuen raspi 5 mit 8Gb betreiben aber da fehlen mir noch gutes gehäuse ähnlich dem Argon one M.2 das würde mir dann schon reichen -
RE: Adapter "smartmeter"
@klassisch Ich habe in der letzten Woche meinen neuen Zähler einen L&G E320 bekommen und 3 Tage später war auch der Pin da und jetzt funktioniert es endlich wie es soll bzw. kann
-
RE: Test Adapter Philips-TV v0.2.x
Cannot parse json data: 192.168.178.136 console.ts:40:19 ot console.ts:40 _onClick ConfigSendto.tsx:221 onClick ConfigSendto.tsx:346 React 11 r helpers.ts:98 OK console.ts:40:19 Error: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130&args[]=undefined&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings. React 20 onClick ConfigSendto.tsx:344 React 11 r helpers.ts:98 console.ts:40:19 ot console.ts:40 React 15 onClick ConfigSendto.tsx:344 React 11 r helpers.ts:98
-
RE: iR-Lesekopf mit ESP32 über USB-Netzteil
@martinp Man sieht leider wieder das Ihr die Beiträge nicht lest.... Genau das Netzteil hatte ich die Woche etwas weiter oben bereits erwähnt und verlinkt was aber wohl nicht in frage kommt daher ja der Hinweis auf eine Hutschienen steckdose.
-
RE: Adapter "smartmeter"
@glasfaser Jetzt musste ich echt lachen da haste natürlich recht. Aber ich bin etwas neben der Spur gerade mal
-
RE: jarvis v3.2.x - just another remarkable vis
@mcu
Hallo @MCU, könntest du das Issue #2585 schließen der Fehler ist mit der Version Alpha 59 verschwunden.
Danke nochmal für die Hilfe.
Ich habe jetzt auch nochmal ein neues Issue aufgemacht Das klappte ganz gut aber auch weil die Fehlerbeschreibung einfach zu formulieren war.
Gruß -
RE: SONOFF NSPanel mit Lovelace UI
@hansi44 Einmal vom Strom nehmen, (nur Neustart reicht nicht) nachdem das Stromlos war ging es bei mir auch wieder
-
RE: Adapter "smartmeter"
@klassisch So ich habe heute einen neuen L&G E320 Zweirichtuingszähler bekommen den ich mir Privat gekauft habe. Ich wollte einfach wissen warum ich meinen verbauten E320 nicht ausgelesen bekomme.
Ich hab den neuen am Schreibtisch mal angeklemmt und einen Verbraucher drangehangen und meinen D1 Mini mit dem Hitchi IR Lesekopf dran gehangen und auf Anhieb habe ich die Daten auslesen können. In dem Fall jetzt nur die Server ID lesbar in Tasmota aber auf der Konsole kommen auch die restlichen Datenfelder nur mangels Pin werden diese scheinbar in Tasmota nicht angezeigt bzw der Total Verbrauch kann nicht angezeigt werden da der Zähler noch komplett auf 0 steht..
Ich habe dannn nochmal den Test mit meiner Kamera gemacht wegen dem IR Signal Licht und das ist im neuen Stromzähler deutlich heller als im Stromzähler der derzeit verbaut ist.
Liegt der Fehler also eindeutig beim Zähler. -
RE: Support Adapter Energiefluss-erweitert v0.7.7
Du kannst die Conf Datei bei deinem freund importieren und anschließend anpassen über die bearbeitungsfunktion
Energiefluss erweitert adapter in den Objekten auswählen
Die Instance auswählen
configuration auswählen und die Json kopieren (Rechtsklick in der Json, alles auswählen, kopieren)
Die Instanzen müssen die gleiche Nummer haben 1,2,3 oder so
oder du kannst die auch in der Json anpassen bevor du diese importierst
Dann bei deinem Freund einfügen
Latest posts made by teletapi
-
RE: Betatest NSPanel-lovelace-ui v0.2.x
//-- Anfang für eigene Seiten -- z.T. selbstdefinierte Aliase erforderlich ---------------- //-- Start for your own pages -- some self-defined aliases required ---------------- let Programmseite: PageType = { 'type': 'cardGrid2', 'heading': 'Programmseite', 'useColor': true, 'items': [ { navigate: true, id: 'alias.0.NSPanel.allgemein.Abfall.event1', targetPage: 'Abfall', name: 'Abfall'}, //Schauen ob die farbe von "Abfall" sich ändert ansonsten .event1 wegmachen { navigate: true, id: null, targetPage: 'GuestWifi', onColor: MSGreen, name: 'Gäste WLAN'}, ] }; let Licht1: PageType = { 'type': 'cardGrid2', 'heading': 'Beleuchtung 1', 'useColor': true, 'items': [ { navigate: true, id: 'alias.0.NSPanel.Hue_Flur_unten.Flur_unten', targetPage: 'FlurHue', name: 'Hue Flur'}, { navigate: true, id: 'alias.0.NSPanel.Badezimmer.Badezimmer_Licht', targetPage: 'Bad', offColor: MSRed, onColor: MSGreen, name: 'Bad unten'}, { navigate: true, id: 'alias.0.NSPanel.Hue_Flur_Mitte.Treppenlicht', targetPage: 'Treppenlicht', offColor: MSRed, onColor: MSGreen, name: 'Treppe'}, { navigate: true, id: 'alias.0.NSPanel.Ankleidezimmer.Steckdose_Fenster', targetPage: 'Ankleidezimmer', offColor: MSRed, onColor: MSGreen, name: 'Ankleide'}, //{ navigate: true, id: 'alias.0.NSPanel.Kueche', targetPage: 'Spuele', name: 'Spuele'}, { navigate: true, id: 'alias.0.NSPanel.Kueche', targetPage: 'Kueche', name: 'Küche'}, { navigate: true, id: 'alias.0.NSPanel.Schlafzimmer.Bett1', targetPage: 'Schlafzimmer', name: 'Schlafen'}, { navigate: true, id: 'alias.0.NSPanel.Waschkueche.Deckenlicht', targetPage: 'Waschkueche', name: 'Waschen'}, ] }; let Wohnen: PageType = { 'type': 'cardGrid2', 'heading': 'Wohnzimmer', 'useColor': true, 'items': [ { navigate: true, id: 'alias.0.NSPanel.Wohnzimmer', targetPage: 'Wohnzimmer', name: 'Steckdosen'}, ] }; let Abfall: PageType = { 'type': 'cardEntities', 'heading': 'Abfallkalender', 'useColor': true, 'subPage': true, 'parent': Programmseite, 'items': [ { id: 'alias.0.NSPanel.allgemein.Abfall.event1', icon: 'trash-can'}, { id: 'alias.0.NSPanel.allgemein.Abfall.event2', icon: 'trash-can'}, { id: 'alias.0.NSPanel.allgemein.Abfall.event3', icon: 'trash-can'}, { id: 'alias.0.NSPanel.allgemein.Abfall.event4', icon: 'trash-can'}, { id: 'alias.0.NSPanel.allgemein.Abfall.event5', icon: 'trash-can'} ] }; let GuestWifi: PageType = { 'type': "cardQR", 'heading': "Gäste Wlan", 'subPage': true, 'parent': Programmseite, 'items': [{ id: 'alias.0.NSPanel.Guest_Wifi', hidePassword: true, // true = Switch; false = Password hideEntity2: false, // true = Switch or Password is Hide autoCreateALias: true} ] }; let Wohnzimmer: PageType = { 'type': 'cardEntities', 'heading': 'Wohnzimmer', 'useColor': true, 'subPage': true, 'parent': Wohnen, 'items': [ { id: 'alias.0.NSPanel.Wohnzimmer.Fernseher', icon: 'power-socket-de', icon2: 'power-plug-off-outline'}, { id: 'alias.0.NSPanel.Wohnzimmer.Ofen_Kamera', icon: 'power-socket-de', icon2: 'power-plug-off-outline'}, { id: 'alias.0.NSPanel.Wohnzimmer.Kugelleuchte', icon: 'power-socket-de', icon2: 'power-plug-off-outline' } ] }; let FlurHue: PageType = { 'type': 'cardGrid3', 'heading': 'Hue Flur', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ { id: 'alias.0.NSPanel.Hue_Flur_unten.Flur_unten', icon: 'lightbulb-on', icon2: 'lightbulb-outline', minValueColorTemp: 2203, maxValueColorTemp: 6500, popupVersion: 2}, { id: 'alias.0.NSPanel.Hue_Flur_unten.Flur_Haustür', icon: 'lightbulb-on', icon2: 'lightbulb-outline', minValueColorTemp: 2203, maxValueColorTemp: 6500, popupVersion: 2}, { id: 'alias.0.NSPanel.Hue_Flur_Mitte.Kleiner_Flur_Mitte', icon: 'lightbulb-on', icon2: 'lightbulb-outline', minValueColorTemp: 2203, maxValueColorTemp: 6500, popupVersion: 2}, { id: 'alias.0.NSPanel.Hue_Flur_Mitte.Flur_Mitte', icon: 'lightbulb-on', icon2: 'lightbulb-outline', minValueColorTemp: 2203, maxValueColorTemp: 6500, popupVersion: 2 } ] }; let Kueche: PageType = { 'type': 'cardGrid', 'heading': 'Küche', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ { id: 'alias.0.NSPanel.Kueche.Hue_deckenlicht', icon: 'lightbulb-on', icon2: 'lightbulb-outline', minValueColorTemp: 2203, maxValueColorTemp: 6500, popupVersion: 2}, { id: 'alias.0.NSPanel.Kueche.Abzugshaube'}, { id: 'alias.0.NSPanel.Kueche.Spüle1', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2}, {id: 'alias.0.NSPanel.Kueche.Spüle2', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2}, {id: 'alias.0.NSPanel.Kueche.Spüle3', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2 } ] }; let Waschkueche: PageType = { 'type': 'cardEntities', 'heading': 'Wasckueche', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ { id: 'alias.0.NSPanel.Waschkueche.Deckenlicht', icon: 'lightbulb-on', icon2: 'lightbulb-outline', minValueColorTemp: 2203, maxValueColorTemp: 6500, popupVersion: 2 } ] }; /* let Spuele: PageType = { 'type': 'cardEntities', 'heading': 'Spüle', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ {id: 'alias.0.NSPanel.Kueche.Spuele1', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2}, {id: 'alias.0.NSPanel.Kueche.Spuele2', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2}, {id: 'alias.0.NSPanel.Kueche.Spuele3', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2 } ] };*/ let Schlafzimmer: PageType = { 'type': 'cardEntities', 'heading': 'Schlafen', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ {id: 'alias.0.NSPanel.Schlafzimmer.Bett1', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2}, {id: 'alias.0.NSPanel.Schlafzimmer.Bett2', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2}, {id: 'alias.0.NSPanel.Schlafzimmer.Bett3', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2700, maxValueColorTemp: 6500, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2}, {id: 'alias.0.NSPanel.Schlafzimmer.Lichtstreifen', icon: 'lightbulb-on', icon2: 'lightbulb-outline', offColor: Off, minValueColorTemp: 2203, maxValueColorTemp: 6536, interpolateColor: true, modeList: ["Color", "Nachtlicht"], inSel_ChoiceState: true, popupVersion: 2 } ] }; let Ankleidezimmer: PageType = { 'type': 'cardEntities', 'heading': 'Ankleidezimmer', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ { id: 'alias.0.NSPanel.Ankleidezimmer.Steckdose_Fenster'} ] }; let Bad: PageType = { 'type': 'cardEntities', 'heading': 'Bad unten', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ { id: 'alias.0.NSPanel.Badezimmer.Badezimmer_Licht', icon: 'lightbulb-on', icon2: 'lightbulb-outline',} ] }; let Treppenlicht: PageType = { 'type': 'cardEntities', 'heading': 'Treppenlicht', 'useColor': true, 'subPage': true, 'parent': Licht1, 'items': [ { id: 'alias.0.NSPanel.Hue_Flur_Mitte.Treppenlicht', icon: 'lightbulb-on', icon2: 'lightbulb-outline',} ] }; let Rolladen: PageType = { 'type': 'cardGrid', 'heading': 'Rolladen', 'useColor': true, 'subPage': false, 'parent': undefined, 'items': [ { id: 'alias.0.NSPanel.Schlafzimmer.Rolladen',icon: 'window-shutter',name: 'Schlafen',interpolateColor: true}, { id: 'alias.0.NSPanel.Ankleidezimmer.Rolladen',icon: 'window-shutter',name: 'Ankleide',interpolateColor: true} ] }; let CardPower: PageType = { "type": "cardPower", "heading": "Energiefluss", // "useColor": true, "subPage": false, "parent": undefined, "items": [ //{id: "alias.0.NSPanel.PowerCard" } {id: 'alias.0.NSPanel.PowerCard', alwaysOnDisplay: true } ] }; //-- https://github.com/joBr99/nspanel-lovelace-ui/wiki/NSPanel-Page-%E2%80%90-Typen_How-2_Beispiele //-- ENDE für eigene Seiten -- z.T. selbstdefinierte Aliase erforderlich ------------------------- //-- END for your own pages -- some self-defined aliases required ------------------------
// EN: Configuration export const config: Config = { // Seiteneinteilung / Page division // Hauptseiten / Mainpages pages: [ Programmseite, CardPower, Licht1, Wohnen, Rolladen, Unlock_Service, //Auto-Alias Service Page (Service Pages used with cardUnlock) //NSPanel_Service, //Auto-Alias Service Page ], // Unterseiten / Subpages subPages: [ NSPanel_Service_SubPage, //Auto-Alias Service Page (only used with cardUnlock) NSPanel_Infos, //Auto-Alias Service Page NSPanel_Wifi_Info_1, //Auto-Alias Service Page NSPanel_Wifi_Info_2, //Auto-Alias Service Page NSPanel_Sensoren, //Auto-Alias Service Page NSPanel_Hardware, //Auto-Alias Service Page NSPanel_IoBroker, //Auot-Alias Service Page NSPanel_Einstellungen, //Auto-Alias Service Page NSPanel_Screensaver, //Auto-Alias Service Page NSPanel_ScreensaverDimmode, //Auto-Alias Service Page NSPanel_ScreensaverBrightness, //Auto-Alias Service Page NSPanel_ScreensaverLayout, //Auto-Alias Service Page NSPanel_ScreensaverWeather, //Auto-Alias Service Page NSPanel_ScreensaverDateformat, //Auto-Alias Service Page NSPanel_ScreensaverIndicators, //Auto-Alias Service Page NSPanel_Relays, //Auto-Alias Service Page NSPanel_Script, //Auto-Alias Service Page NSPanel_Firmware, //Auto-Alias Service Page NSPanel_FirmwareTasmota, //Auto-Alias Service Page NSPanel_FirmwareBerry, //Auto-Alias Service Page NSPanel_FirmwareNextion, //Auto-Alias Service Page Abfall, GuestWifi, Kueche, //Spuele, Wohnzimmer, FlurHue, Treppenlicht, Bad, Waschkueche, Schlafzimmer, Ankleidezimmer, ],
Das sind meine Seiten die ich per Script erstellt habe, bin natürlich nocht nicht ganz fertig bzw. jeden Tag lernt man noch dazu etwas zu verändern oder besser zu machen.
Im Adapter, den hab ich derzeit aber wieder gelöscht hatte ich eigentlich nur die Config drin und wollte mal anfangen die QRCard zu konfigurieren da sind ja im Adapter oben Cards angegeben da fehlten dann aber CardGrid und Cardentities und da bin ich dann schon gleich nicht mehr weiter gekommen und hab fürs erste aufgegeben. Ich glaub ich hol mir noch ein 3tes Panel rein zum testen -
RE: Betatest NSPanel-lovelace-ui v0.2.x
@ticaki Danke, hab das so getestet indem ich per URL installiert habe und dann eine Distanz erstellt habe. Hat auch sowweit funktioniert nachdem die Serviceseiten funktionierten und ich im Anschluss eine andere Seite versuchte bin ich echt überfordert gewesen und habs erstmal wieder verworfen. Ich werde wohl warten bis die Wiki da mehr hergibt. Ich bekam immer die Meldung das die Navigate nicht vorhanden sei und ich nicht wusste wie ich das in den Admineinstellungen realisieren sollte.
-
RE: Betatest NSPanel-lovelace-ui v0.2.x
@ticaki Nabend, ich war jetzt mal geneigt den Adapter zu installieren aber weder unter NPM noch unter Github finde ich den Adapter und wenn ich per URL installiere wird auch keine Instanz erzeugt.
Bin jetzt etwas überfragt -
RE: Test Adapter ioBroker.backitup v3.1.x
Gleiches bei mir, ebenfalls die gleiche Config. mit 3.3.3 geht kein Backitup von Grafana mehr hab dazu ein Issue aufgemacht
-
RE: SONOFF NSPanel mit Lovelace UI
@tt-tom Danke dir dann werde ich das mal so testen
-
RE: SONOFF NSPanel mit Lovelace UI
@tt-tom Danke dir, ich hab als Datenpunkt derzeit: 0_userdata.0.PV.now.Battery_Power als lade/entlade datenpunkt müsste ja auch: modbus.0.holdingRegisters._BatterySOC funktionieren. Als möglichen Alias für Battery_soc hab ich diesen Alias angelegt: alias.0.NSPanel.PV_Anlage.Battery_Soc.SET
Eigentlich geht es mir nur darum wenn Voll dann grün, beim Laden Rot und wenns möglich wäre fürs entladen gelb.
Ich habe jetzt auch nochmal ChatGPT gefragt wegen der Variable für das iconColor.
Da wurde mir das folgende angepasste script erzeugt.schedule("* * * * *", function () { var powerCardJson = "0_userdata.0.NSPanel.Powercard"; var pwr1Raw = getState("0_userdata.0.PV.now.Battery_Power").val || 0; var pwr1 = Math.abs(Math.round(pwr1Raw)); // Betrag für Anzeige var pwr2 = Math.round(getState("modbus.0.holdingRegisters._Total_Active_power_(Grid_Meter)").val); var pwr3 = ""; var pwr4 = ""; var pwr5 = Math.round(getState("sonoff.0.Tasmota Energie LG E320.E320_Power_in").val); var pwr6 = 0; var pwrHome = Math.round(getState("0_userdata.0.PV.now.Load_Total_Power").val || 0); var keys = ["id", "value", "unit", "icon", "iconColor", "speed"]; var helperBase = "0_userdata.0.NSPanel.PowercardHelper"; if (!existsObject(helperBase)) { createState(helperBase, null, { type: "channel", common: { name: "PowercardHelper" }, native: {} }); } function createStateIfNotExists(id, initialValue = 0) { if (!existsState(id)) { createState(id, initialValue, { name: "Last Power Wert", role: "value", type: "number", unit: "W", read: true, write: false }); } } createStateIfNotExists(helperBase + ".PWR1_Last"); createStateIfNotExists(helperBase + ".PWR2_Last"); createStateIfNotExists(helperBase + ".PWR5_Last"); function getLastValue(id) { var s = getState(id); return s ? s.val : 0; } function setLastValue(id, val) { setState(id, val, true); } function calcSpeed(current, last) { if (current > last) return 2; else if (current < last) return -2; else return 0; } var pwr1Last = getLastValue(helperBase + ".PWR1_Last"); var pwr2Last = getLastValue(helperBase + ".PWR2_Last"); var pwr5Last = getLastValue(helperBase + ".PWR5_Last"); var speedPwr1 = calcSpeed(pwr1Raw, pwr1Last); // Richtung basiert auf Originalwert var speedPwr2 = calcSpeed(pwr2, pwr2Last); var speedPwr5 = calcSpeed(pwr5, pwr5Last); setLastValue(helperBase + ".PWR1_Last", pwr1Raw); setLastValue(helperBase + ".PWR2_Last", pwr2); setLastValue(helperBase + ".PWR5_Last", pwr5); // Dynamische iconColor für Batterie var iconColorBatt; if (pwr1Raw > 50) { iconColorBatt = 3; // rot → Laden } else if (pwr1Raw < -50) { iconColorBatt = 4; // gelb → Entladen } else if (Math.abs(pwr1Raw) <= 50) { iconColorBatt = 7; // grün → Voll } else { iconColorBatt = 1; // grau → fallback } var home = [0, pwrHome, "W", "home-lightning-bolt-outline", 0, 0]; // Batterie → ID 1 var item1 = [1, pwr1, "W", "battery-high", iconColorBatt, speedPwr1]; var item2 = [2, pwr2, "W", "solar-power-variant-outline", 3, speedPwr2]; var item3 = [3, pwr3, "", "", 0, 0]; var item4 = [4, pwr4, "", "", 0, 0]; var item5 = [5, pwr5, "W", "transmission-tower", 10, speedPwr5]; var item6 = [6, pwr6, "kW", "", 0, 0]; function func(tags, values) { return tags.reduce((acc, tag, index) => { acc[tag] = values[index]; return acc; }, {}); } setState( powerCardJson, JSON.stringify([ func(keys, home), func(keys, item1), func(keys, item2), func(keys, item3), func(keys, item4), func(keys, item5), func(keys, item6), ]) ); });
-
RE: SONOFF NSPanel mit Lovelace UI
@tt-tom said in SONOFF NSPanel mit Lovelace UI:
[1, pwr1, "W", "battery-high", 3, speedPwr1]
Wenn du mir jetzt noch sagen würdest wie, dann wäre ich dabei. Das sind alles spanische Dörfer für mich die verursachen bei mir Knoten im Kopf...
-
RE: SONOFF NSPanel mit Lovelace UI
Morjen, ich hab da noch Fragen ;-), ich hab mir mit eurer Hilfe Anleitungen und ein wenig Chatgpt versucht ein JS script zu basteln um mal mit der Powercard zu spielen und einen Teil meiner PV Anlage wiederzugeben.
Da wird das batteriesymbol jetzt im Moment grün dargestellt könnte man diese farbe dynamisch oder ggf. auch statisch ändern lassen wenn Voll dann grün wenn geladen wird Rot..?Hier Das Script:
schedule("* * * * *", function () { var powerCardJson = "0_userdata.0.NSPanel.Powercard"; var pwr1Raw = getState("0_userdata.0.PV.now.Battery_Power").val || 0; var pwr1 = Math.abs(Math.round(pwr1Raw)); // Betrag für Anzeige var pwr2 = Math.round(getState("modbus.0.holdingRegisters._Total_Active_power_(Grid_Meter)").val); var pwr3 = ""; var pwr4 = ""; var pwr5 = Math.round(getState("sonoff.0.Tasmota Energie LG E320.E320_Power_in").val); var pwr6 = 0; var pwrHome = Math.round(getState("0_userdata.0.PV.now.Load_Total_Power").val || 0); var keys = ["id", "value", "unit", "icon", "iconColor", "speed"]; var helperBase = "0_userdata.0.NSPanel.PowercardHelper"; if (!existsObject(helperBase)) { createState(helperBase, null, { type: "channel", common: { name: "PowercardHelper" }, native: {} }); } function createStateIfNotExists(id, initialValue = 0) { if (!existsState(id)) { createState(id, initialValue, { name: "Last Power Wert", role: "value", type: "number", unit: "W", read: true, write: false }); } } createStateIfNotExists(helperBase + ".PWR1_Last"); createStateIfNotExists(helperBase + ".PWR2_Last"); createStateIfNotExists(helperBase + ".PWR5_Last"); function getLastValue(id) { var s = getState(id); return s ? s.val : 0; } function setLastValue(id, val) { setState(id, val, true); } function calcSpeed(current, last) { if (current > last) return 2; else if (current < last) return -2; else return 0; } var pwr1Last = getLastValue(helperBase + ".PWR1_Last"); var pwr2Last = getLastValue(helperBase + ".PWR2_Last"); var pwr5Last = getLastValue(helperBase + ".PWR5_Last"); var speedPwr1 = calcSpeed(pwr1Raw, pwr1Last); // Richtung basiert auf Originalwert var speedPwr2 = calcSpeed(pwr2, pwr2Last); var speedPwr5 = calcSpeed(pwr5, pwr5Last); setLastValue(helperBase + ".PWR1_Last", pwr1Raw); setLastValue(helperBase + ".PWR2_Last", pwr2); setLastValue(helperBase + ".PWR5_Last", pwr5); var home = [0, pwrHome, "W", "home-lightning-bolt-outline", 0, 0]; // Batterie → ID 1 var item1 = [1, pwr1, "W", "battery-high", 3, speedPwr1]; var item2 = [2, pwr2, "W", "solar-power-variant-outline", 3, speedPwr2]; var item3 = [3, pwr3, "", "", 0, 0]; var item4 = [4, pwr4, "", "", 0, 0]; var item5 = [5, pwr5, "W", "transmission-tower", 10, speedPwr5]; var item6 = [6, pwr6, "kW", "", 0, 0]; function func(tags, values) { return tags.reduce((acc, tag, index) => { acc[tag] = values[index]; return acc; }, {}); } setState( powerCardJson, JSON.stringify([ func(keys, home), func(keys, item1), func(keys, item2), func(keys, item3), func(keys, item4), func(keys, item5), func(keys, item6), ]) ); });
Hier meine Powercard:
let CardPower: PageType = { "type": "cardPower", "heading": "Energiefluss", // "useColor": true, "subPage": false, "parent": undefined, "items": [ {id: "alias.0.NSPanel.PowerCard", alwaysOnDisplay: true} // interpolateColor: true} ] };
Und hier ein Bild wie es derzeit aussieht: