NEWS
SONOFF NSPanel mit Lovelace UI
-
-
@arteck @ilovegym - danke für die schnelle Antwort!
Hier genau ist meinProblemDummerweise finde ich die Datenpunkte nicht im Script ...
//-------DE: Anfang Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) ------------- //-------EN: Start Settings for Hardware Button, if used in software (Rule2) -------------------------------------- // DE: Konfiguration des linken Schalters des NSPanels // EN: Configuration of the left switch of the NSPanel button1: { // DE: Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null // EN: Possible values if Rule2 defined: 'page', 'toggle', 'set' - If not defined --> mode: null mode: null, // DE: Zielpage - Verwendet wenn mode = page // EN: Target page - Used if mode = page page: null, // DE: Zielentity - Verwendet wenn mode = set oder toggle // EN: Target entity - Used if mode = set or toggle entity: null, // DE: Zielwert - Verwendet wenn mode = set // EN: Target value - Used if mode = set setValue: null }, // DE: Konfiguration des rechten Schalters des NSPanels // EN: Configuration of the right switch of the NSPanel button2: { mode: null, page: null, entity: null, setValue: null },
-
AH!
Ich glaube ich habs!
Ich lausche den MQTT Events in einem anderen Script:on({ id: 'mqtt.0.NSPANEL_REY.tele.RESULT', change: 'any' }, (obj) => {
const val = obj?.state?.val;
if (typeof val !== 'string' || !val.includes('CustomRecv')) return;try { const payload = JSON.parse(val); const event = payload?.CustomRecv; // === BUTTON 1 === if (event === 'event,button1') { const dp = 'alias.0.NSPanel.wohnzimmer.WledRey.ON'; const current = getState(dp)?.val; const newVal = !current; setState(dp, newVal); if (newVal === true) { setState('wled.0.781c3ca4b32c.seg.0.bri', 128); setState('wled.0.781c3ca4b32c.seg.0.col.0', [255, 255, 255, 0]); setState('wled.0.781c3ca4b32c.seg.0.cct', 50); } } // === BUTTON 2 === else if (event === 'event,button2') { const dp = 'nanoleaf-lightpanels.1.LightPanels.state'; const current = getState(dp)?.val; const newVal = !current; setState(dp, newVal); if (newVal === true) { setState('nanoleaf-lightpanels.1.LightPanels.brightness', 100); } } } catch (err) { log('Fehler beim Parsen von CustomRecv: ' + err.message, 'warn'); }
});
-
Eine Frage habe ich noch ...
Gibt es ein "best practice", um das Script mit wenig Aufwand auf seine aktuelle Version zu bringen? Ich würde gerne die cartThermo2 nutzen. Einfach den Bereich " DE: Ab hier keine Konfiguration mehr" austauschen? -
@drloksoft
Jo - ich hab das so oft gemach das ich nachno more
suche und alles ab da tausche. -
@ticaki top, danke!
-
Hallo zusammen,
hallo @Armilarich habe die Config mal auf "Pirate-Weather" umgestellt, bekomme aber z.T. keine sinnvollen bzw. keine Werte angezeigt.
Die Datenpunkte unter
const weatherEntityPath: string = 'alias.0.Pirate-Wetter';
werden nicht geschrieben, obwohl unter
const autoCreateAlias = true;
der richtige Wert gesetzt ist.
Würde mich freuen, wenn ich einen hilfreichen Tip erhalte...
Danke & Gruß
/*********************************************************************** ** ** ** Screensaver Configuration ** ** ** ***********************************************************************/ leftScreensaverEntity: [ // Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400 ], bottomScreensaverEntity: [ // bottomScreensaverEntity 1 { ScreensaverEntity: 'pirate-weather.0.weather.daily.00.sunsetTime', ScreensaverEntityFactor: 1, ScreensaverEntityDecimalPlaces: 0, ScreensaverEntityDateFormat: {hour: '2-digit', minute: '2-digit'}, // Description at Wiki-Pages ScreensaverEntityIconOn: 'weather-sunset-down', ScreensaverEntityIconOff: null, ScreensaverEntityText: 'Sonne', ScreensaverEntityUnitText: '%', ScreensaverEntityIconColor: MSYellow //{'val_min': 0, 'val_max': 100} }, // bottomScreensaverEntity 2 { ScreensaverEntity: 'pirate-weather.0.weather.currently.windSpeed', ScreensaverEntityFactor: (1000 / 3600), ScreensaverEntityDecimalPlaces: 1, ScreensaverEntityIconOn: 'weather-windy', ScreensaverEntityIconOff: null, ScreensaverEntityText: "Wind", ScreensaverEntityUnitText: 'km/h', ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120} }, // bottomScreensaverEntity 3 { ScreensaverEntity: 'pirate-weather.0.weather.currently.windGust', ScreensaverEntityFactor: (1000 / 3600), ScreensaverEntityDecimalPlaces: 1, ScreensaverEntityIconOn: 'weather-tornado', ScreensaverEntityIconOff: null, ScreensaverEntityText: 'Böen', ScreensaverEntityUnitText: 'km/h', ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120} }, // bottomScreensaverEntity 4 { ScreensaverEntity: 'pirate-weather.0.weather.currently.windBearingText', ScreensaverEntityFactor: 1, ScreensaverEntityDecimalPlaces: 0, ScreensaverEntityIconOn: 'windsock', ScreensaverEntityIconOff: null, ScreensaverEntityText: 'Windr.', ScreensaverEntityUnitText: '°', ScreensaverEntityIconColor: White }, // bottomScreensaverEntity 5 (for Alternative and Advanced Screensaver) { ScreensaverEntity: 'pirate-weather.0.weather.currently.humidity', ScreensaverEntityFactor: 1, ScreensaverEntityDecimalPlaces: 1, ScreensaverEntityIconOn: 'water-percent', ScreensaverEntityIconOff: null, ScreensaverEntityText: 'Feuchte', ScreensaverEntityUnitText: '%', ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} }, // bottomScreensaverEntity 6 (for Advanced Screensaver) { ScreensaverEntity: NSPanel_Path + 'Relay.1', ScreensaverEntityIconOn: 'coach-lamp-variant', ScreensaverEntityText: 'Street', ScreensaverEntityOnColor: Yellow, ScreensaverEntityOffColor: White, ScreensaverEntityOnText: 'Is ON', ScreensaverEntityOffText: 'Not ON' }, // Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400 ], indicatorScreensaverEntity: [ // Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400 ], // Status Icon mrIcon1ScreensaverEntity: { ScreensaverEntity: NSPanel_Path + 'Relay.1', ScreensaverEntityIconOn: 'lightbulb', ScreensaverEntityIconOff: null, ScreensaverEntityValue: null, ScreensaverEntityValueDecimalPlace: 0, ScreensaverEntityValueUnit: null, ScreensaverEntityOnColor: On, ScreensaverEntityOffColor: HMIOff }, mrIcon2ScreensaverEntity: { ScreensaverEntity: NSPanel_Path + 'Relay.2', ScreensaverEntityIconOn: 'lightbulb', ScreensaverEntityIconOff: null, ScreensaverEntityValue: null, ScreensaverEntityValueDecimalPlace: 0, ScreensaverEntityValueUnit: null, ScreensaverEntityOnColor: On, ScreensaverEntityOffColor: HMIOff }, // ------ DE: Ende der Screensaver Einstellungen -------------------- // ------ EN: End of screensaver settings ---------------------------
-
der autoCreateAlias dürfte da keinen Einfluss haben... Der kommt nur bei speziellen Cards zum Einsatz...
Um den Forecast und das aktuelle Wetter zu nutzen, solltest du deine Config so wie hier anpassen:
/***** 3. Weather adapter Config *****/ // DE: Mögliche Wetteradapter 'accuweather.0.' oder 'daswetter.0.' oder 'openweathermap.0.' oder 'pirate-weather.0.' // EN: Possible weather adapters 'accuweather.0.' or 'daswetter.0.' or 'openweathermap.0. or 'pirate-weather.0.' const weatherAdapterInstance: string = 'pirate-weather.0.'; // DE: Mögliche Werte: 'Min', 'Max' oder 'MinMax' im Screensaver // EN: Possible values: 'Min', 'Max' or 'MinMax' in the screensaver const weatherScreensaverTempMinMax: string = 'MinMax'; // DE: Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden // EN: This alias is automatically created for the selected weather and can be adjusted accordingly const weatherEntityPath: string = 'alias.0.PWWetter';
Der Wetter-Alias wird automatisch angelegt, sofern er nicht vorhanden ist... Deshalb steht da auch PWWetter (kann man natürlich auch anders nennen)
Das Script verfolgt immer nur einen bevorzugten Wetteradapter und der muss in
const weatherAdapterInstance: string = 'pirate-weather.0.';
eingetragen sein...
Bei
sunsetTime
kann es durchaus sein, dass die Date-Formatierung nicht durchgeht... Ansonsten im Alias per Formatierung auf einen Uhrzeit-String zurückgreifen... -
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
Das Script verfolgt immer nur einen bevorzugten Wetteradapter und der muss in
const weatherAdapterInstance: string = 'pirate-weather.0.';
da fehlte tatsächloch der letzte "Punkt"
eingetragen sein...
Bei
sunsetTime
kann es durchaus sein, dass die Date-Formatierung nicht durchgeht... Ansonsten im Alias per Formatierung auf einen Uhrzeit-String zurückgreifen...In dem Alias wird kein DP für sunset angelegt und der Wert von Pirate-Weather wird in Millisekunden in die Objekte geschrieben.
Wie wandel ich das denn um? Sorry, aber so tief stecke ich das nicht drin
-
ohne Sekunden:
(new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' })
mit Sekunden
(new Date(val)).toLocaleTimeString('de')
oder als String
String((new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' }))
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
(new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' })
Danke für Deine Unterstützung - wo füge ich den den oben stehenden Wert ohne Sekunden ein?
Wenn ich ihn in der Screensaver Configuration unter
ScreensaverEntityDateFormat: (new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' })
einfüge, erhalte ich Fehlermeldungen... bin etwas hilflos
-
@toysman
Im Alias der die Daten bereitstellt auf den Stift klicken rechts
und dort da:
bei Konverter beim lesen -
Du erstellst dir einen Alias vom Typ info:
Klickst hinten beim ACTUAL auf das fx
und trägst dort
String((new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' }))
ein
okay und speichern...
// bottomScreensaverEntity 1 { ScreensaverEntity: 'alias.0.NSPanel.EMU.Sunset.ACTUAL', ScreensaverEntityFactor: 1, ScreensaverEntityDecimalPlaces: 0, ScreensaverEntityDateFormat: { hour: '2-digit', minute: '2-digit' }, ScreensaverEntityIconOn: 'weather-sunset-down', ScreensaverEntityIconOff: null, ScreensaverEntityText: 'Sonne', ScreensaverEntityIconColor: MSYellow },
Und jetzt der Sonnenuntergang vom Pirate-Weather Adapter korrekt im Screensaver:
EDIT: Habe den bottomScreensaverEntity nochmal editiert...
-
-
Kommt alles aus dem Skript-Part:
/***** 3. Weather adapter Config *****/ // DE: Mögliche Wetteradapter 'accuweather.0.' oder 'daswetter.0.' oder 'openweathermap.0.' oder 'pirate-weather.0.' // EN: Possible weather adapters 'accuweather.0.' or 'daswetter.0.' or 'openweathermap.0. or 'pirate-weather.0.' const weatherAdapterInstance: string = 'pirate-weather.0.'; // DE: Mögliche Werte: 'Min', 'Max' oder 'MinMax' im Screensaver // EN: Possible values: 'Min', 'Max' or 'MinMax' in the screensaver const weatherScreensaverTempMinMax: string = 'MinMax'; // DE: Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden // EN: This alias is automatically created for the selected weather and can be adjusted accordingly const weatherEntityPath: string = 'alias.0.PWWetter';
Das Skript erzeugt dabei einen neuen Wetteralias...
Einfach austauschen Skript starten und dann sollte der Forecast laufen
EDIT:
oder Alternate:
oder Advanced:
oder Easyview:
EDIT2: aber das Skript in der Version v4.9.5.1 (unterer Teil) benutzt du, oder? Sonst wird es nicht funktionieren!!!
-
das sieht bei mir identisch aus...
/***** 3. Weather adapter Config *****/ // DE: Mögliche Wetteradapter 'accuweather.0.' oder 'daswetter.0.' // EN: Possible weather adapters 'accuweather.0.' or 'the weather.0.' const weatherAdapterInstance: string = 'pirate-weather.0.'; // DE: Mögliche Werte: 'Min', 'Max' oder 'MinMax' im Screensaver // EN: Possible values: 'Min', 'Max' or 'MinMax' in the screensaver const weatherScreensaverTempMinMax: string = 'MinMax'; // DE: Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden // EN: This alias is automatically created for the selected weather and can be adjusted accordingly const weatherEntityPath: string = 'alias.0.PWWetter';
In alias.0.PWWETTER sind aber nurr 4 DP angelegt worden.
Der Forecast fehlt da offensichtlich
und ja, das aktuelle TS verwende ich...
/*----------------------------------------------------------------------- TypeScript v4.9.5.1 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne - abgestimmt auf TFT 58 / v4.9.5 / BerryDriver 10 / Tasmota 15.0.1
-
Der Forecast wird nicht aus dem Alias geholt...
Wenn deine Pirate-Weather Instanz diese Daten hat, dann kommt auch der Forecast
Also unter:
- pirate-weather.0.weather.daily.00.
- pirate-weather.0.weather.daily.01.
- pirate-weather.0.weather.daily.02.
- pirate-weather.0.weather.daily.03.
- pirate-weather.0.weather.daily.04.
- etc.
Soll heißen, der Forecast greift direkt auf die Datenpunkte der Adapterinstanz zu:
- icon,
- time,
- temperatureMin,
- temperatureMax
-
das laden der Forecast Werte hat wohl etwas länger gedauert als erwartet... zu ungeduldig ich bin
Danke für Deine Unterstützung
-
Die sind da sobald im log die Startup Meldung vom pirate Adapter mit den Koordinaten erscheint. Außer dein Netzwerk spinnt - oder deren
-
scheint jetzt zu laufen