Vorab, ist noch in Arbeit und bei Interesse stelle ich alles nach und nach ein.
Sollten Verbesserungsvorschläge bestehen, bitte melden, ansonsten wie gefällt Euch die Darstellung?
View's und teilweise Info's:
Vorab, ist noch in Arbeit und bei Interesse stelle ich alles nach und nach ein.
Sollten Verbesserungsvorschläge bestehen, bitte melden, ansonsten wie gefällt Euch die Darstellung?
View's und teilweise Info's:
Hallo zusammen,
hier meine neue VIS nach Anregungen aus dem Forum, speziell Farbgestaltung.
Nochmals vielen Dank für die Hilfe.
Übersicht
Home
Wettervorhersage
Status
News
Geräte
Spritpreise
Uhr
Robby
Ein Teil muß ich noch fertig stellen.
Hoffe es gefällt?
MfG
Wastl
Hallo zusammen,
hier der erste Teil meiner Vis für ein iPad pro 10.5“.
Als erstes meinen Dank an alle, für Anregungen und schon fast komplette Lösungen, die ich für meine Vis genutzt habe!!
Anmerkungen:
Die View’s „Waschmaschine“ und „PV-Anlage“ sind noch nicht ganz fertig.
Bei „Waschmaschine“ bin ich noch alle Möglichkeiten am Ausprobieren.
Bei „PV-Anlage“ fehlt noch die Batterie, kommt in ca. 4 Wochen, dann geht’s weiter.
Für „Home“ habe ich nicht alle Räume kopiert, wird wohl keine das gleiche Haus haben, mit
den gleichen Sensoren, View „Küche“ dient als Ursprung.
In „01_Home“ alle anderen View’s mit „000_Leer“ belegen.
Wie das mit meiner Wetterstatistik bei Euch gehen soll, keine Ahnung.
Ich habe die Wetterdaten seit 2010 gespeichert. Werden wohl einige Anpassungen von Nöten sein?
Alle View’s und Scripte habe ich jeweils in einer separaten Zip-Datei, wird sonst wohl zu groß.
Ansonsten, wenn etwas fehlt oder nicht sofort funktioniert, bitte melden.
Los geht’s:
Datenpunkte:
Scripte:
Views Texte:
Views PNG:
Das soll es gewesen sein.
MfG
Wastl
Hallo zusammen,
mit Hilfe aus dem Forum habe ich hier mal eine "andere" Uhr, diese will ich als Bildschirmschoner einsetzten.
Die 4 Led's in den Ecken stellen die Minuten dar. Die gelbe Led die jeweilige Sekunde. Der Text selbst erklärend.
Wenn es einer möchte, melden.
MfG
Wastl
Ps.
Eine Bitte, sollte es Er Sie Es haben wollen und Er Sie Es verbessert das JavaScript oder die Darstellung bitte ich um Rückmeldung, da ich immer noch nicht fit in JavaScript und Vis bin!!
Nachtrag: Die Uhr zeigt 9:14:21 an.
Hallo zusammen,
hier der 2. Versuch einer VIS.
Wollte keine Überladene "Übersichts-View" und habe mit folgendes Überlegt:
In den oberen Widget (Keller, Schlafzimmer) habe ich die Kennzeichnungen für
F = Fenster
T = Türen
L = Licht
G = Geräte
H = Heizung (Thermostat)
eingebaut.
Grau = Nicht in Betrieb oder nicht geöffnet
Rot = In Betrieb oder geöffnet
Sollte einer der Geräte oder Sensoren in einem Raum fehlerhaft sein wird der Rand Rot (wie bei Kameras).
Bei den Menue-Buttons mit "..." erscheint bei Klicken ein Untermenu.
Bin noch am weiter arbeiten, aber mich würde Eure Meinung dazu interessieren.
Vielen Dank
MfG
Wastl
Hallo,
hier eine etwas andere Darstellung.
Zuerst die etwas angepasste Funktion
let cronSekunde = '* * * * * *'; // Wird jede Sekunde ausgeführt
let cronMinute = "*/1 * * * *"; // Wird jede Minute ausgeführt
let cronText = "*/5 * * * *"; // Wird alle 5 Minuten ausgeführt
let farbe = 'yellow';
let dp = "0_userdata.0.vis.Uhr."; //Erster Teil des Datenpunktes
clearSekunden();
showSekunden();
showMinute();
showText();
async function showSekunden() { //LED Sekunden anzeigen
let sekunde = new Date().getSeconds(); //Aktuelle Sekunde holen
let dp_Sekunde = '';
let farbe = 'black';
dp_Sekunde = dp + 'Sekunden.s' + sekunde.toString(); //Datenpunkt festlegen
if (sekunde > 0) { //Ist die Sekunde > 1 wird die
setState(dp + 'Sekunden.s' + (sekunde - 1).toString(), 'black', true); //LED Sekunde - 1 ausgeblendet
} else {
setState(dp + 'Sekunden.s59' , 'black', true); //Ist die Sekunde < 1 wird die
}; //LED 59 Sekunde ausgeblendet
// if (sekunde >= 0) {
// setState(dp_Sekunde, 'yellow', true); //LED Sekunde wird angezeigt
// };
if (sekunde % 10 == 0) {
farbe = 'cyan';
} else if (sekunde % 5 == 0) {
farbe = 'red';
} else {
farbe = 'yellow';
};
setState(dp_Sekunde, farbe, true); //LED Sekunde wird angezeigt
};
async function showMinute() { //LED Minuten anzeigen
let minute = new Date().getMinutes(); //Aktuelle Minute holen
let rest = minute % 5; //Minute durch 5 teilen und den Rest speichern
if (rest == 0) { //Ist der rest 0 alle DP auf false setzten
setState(dp + 'Minuten.Minute_1', '#2e2e2e', true);
setState(dp + 'Minuten.Minute_2', '#2e2e2e', true);
setState(dp + 'Minuten.Minute_3', '#2e2e2e', true);
setState(dp + 'Minuten.Minute_4', '#2e2e2e', true);
} else if (rest == 1) { //Minute = 6 oder 11 oder 16 usw.
setState(dp + 'Minuten.Minute_1', 'orange', true); //LED Minute 1 wird orange
} else if (rest == 2) { //Minute = 7 oder 12 oder 17 usw.
setState(dp + 'Minuten.Minute_2', 'orange', true); //LED Minute 2 wird orange
} else if (rest == 3) { //usw
setState(dp + 'Minuten.Minute_3', 'orange', true);
} else if (rest == 4) {
setState(dp + 'Minuten.Minute_4', 'orange', true);
};
};
async function showText() { //Zeit als Text wird angezeigt
let minute = new Date().getMinutes(); //Aktuelle Minute holen
let stunde = new Date().getHours(); //Aktuelle Stunde holen
clearUhr(); //alle dp in text auf false setzten
if (minute >= 5 && minute <= 9) { //Uhr Texte Minuten erstellen Start
setState(dp + 'Text.fuenf_Minuten', true, true);
setState(dp + 'Text.nach', true, true);
} else if (minute >= 10 && minute <= 14) {
setState(dp + 'Text.zehn_Minuten', true, true);
setState(dp + 'Text.nach', true, true);
} else if (minute >= 15 && minute <= 19) {
setState(dp + 'Text.viertel', true, true);
setState(dp + 'Text.nach', true, true);
} else if (minute >= 20 && minute <= 24) {
setState(dp + 'Text.zwanzig', true, true);
setState(dp + 'Text.nach', true, true);
} else if (minute >= 25 && minute <= 29) {
setState(dp + 'Text.fuenf_Minuten', true, true);
setState(dp + 'Text.vor', true, true);
setState(dp + 'Text.halb', true, true);
} else if (minute >= 30 && minute <= 34) {
setState(dp + 'Text.halb', true, true);
} else if (minute >= 35 && minute <= 39) {
setState(dp + 'Text.fuenf_Minuten', true, true);
setState(dp + 'Text.nach', true, true);
setState(dp + 'Text.halb', true, true);
} else if (minute >= 40 && minute <= 44) {
setState(dp + 'Text.zwanzig', true, true);
setState(dp + 'Text.vor', true, true);
} else if (minute >= 45 && minute <= 49) {
setState(dp + 'Text.viertel', true, true);
setState(dp + 'Text.vor', true, true);
} else if (minute >= 50 && minute <= 54) {
setState(dp + 'Text.zehn_Minuten', true, true);
setState(dp + 'Text.vor', true, true);
} else if (minute >= 55 && minute <= 59) {
setState(dp + 'Text.fuenf_Minuten', true, true);
setState(dp + 'Text.vor', true, true); //Uhr Texte Minuten erstellen Ende
};
if (stunde > 12 && stunde < 24) { //Wenn Stunde > 12 und kleiner 24 ist
stunde -= 12; //12 abziehen. Nur 12 Stunden anzeige
};
if (minute > 24) { //Von 0 - 24 Text nach stunde
stunde += 1; //Von 25 - 59 Text vor stunde
};
if (minute >= 0 && minute <= 4) { //Ist Minute 0 - 4 dann stunde + uhr
setState(dp + 'Text.uhr', true, true);
};
if ((stunde == 1 || stunde == 13) && minute == 0) { //Uhr Texte Stunde erstellen Start
setState(dp + 'Text.ein', true, true);
} else if ((stunde == 1 || stunde == 13) && minute > 0) {
setState(dp + 'Text.ein', true, true);
setState(dp + 'Text.s', true, true);
} else if (stunde == 2) {
setState(dp + 'Text.zwei', true, true);
} else if (stunde == 3) {
setState(dp + 'Text.drei', true, true);
} else if (stunde == 4) {
setState(dp + 'Text.vier', true, true);
} else if (stunde == 5) {
setState(dp + 'Text.f', true, true);
setState(dp + 'Text.fuenf_Stunde', true, true);
} else if (stunde == 6) {
setState(dp + 'Text.sechs', true, true);
} else if (stunde == 7) {
setState(dp + 'Text.sieben', true, true);
} else if (stunde == 8) {
setState(dp + 'Text.acht', true, true);
} else if (stunde == 9) {
setState(dp + 'Text.n', true, true);
setState(dp + 'Text.neun', true, true);
} else if (stunde == 10) {
setState(dp + 'Text.zehn_Stunde', true, true);
setState(dp + 'Text.n', true, true);
} else if (stunde == 11) {
setState(dp + 'Text.f', true, true);
setState(dp + 'Text.elf', true, true);
} else if (stunde == 12 || stunde == 0) {
setState(dp + 'Text.zwoelf', true, true); //Uhr Texte Stunde erstellen Ende
};
};
function clearSekunden() { //LED Sekunden werden ausgeblendet
let sekundenSelector = $(dp + "Sekunden.*");
sekundenSelector.each(function(id, i) {
setState(id, 'black', true);
});
};
function clearUhr() { //Text zurücksetzten
let sekundenSelector = $(dp + "Text.*");
sekundenSelector.each(function(id, i) {
setState(id, false, true);
});
};
schedule(cronSekunde, function () {showSekunden();}); //Funktion Sekunden anzeigen aufrufen, jede Sekunde
schedule(cronMinute, function () {showMinute();}); //Funktion Minute anzeigen aufrufen, jede Minute
schedule(cronText, function () {showText();}); //Funktion Text anzeigen aufrufen, alle 5 Minuten
Hier die View als Text:
und hier ein Bild:
Änderungen:
Darstellung Rund
Sekunden Led's alle 5 Sekunden rot und alle 10 Sekunden cyan.
Unten noch eine Laufschrift mit Aussentemperatur und Aktuellem Wetter von der Wetterstation, Dank an @sigi234 .
Mfg
Wastl
Ja, ich werde sobald ein Block z.B: "Home" fertig ist, es sofort einstellen!
Bin auch gerade dabei die gleiche Darstellung für eine iPad zu realisieren, dadurch sind ein paar Anpassungen von Nöten.
Auch das wird dann reingestellt.
Ich sehe es als Gegenleistung und ein Danke, für die Hilfe hier im Forum an.
MfG
Wastl
Deine Wünsche sind machbar, dauert aber einen Moment, weil meine bessere Hälfte für das Wochenende "Arbeiten am Haus" vorgesehen hat.
Aber ich werde es am Montag in Angriff nehmen.
Des weiteren wird es noch eine 3 Version der Uhr geben und zwar als Pyramide.
MfG
Wastl
Trotz Wiederstand meiner besseren Hälfte konnte ich mich durch setzten und Deine Wünsche zu mindestens in der Runden-Uhr erfüllen.
Alles was an der Uhr auch nur nach Farbe aussieht ist jetzt im Script einstellbar, sogar beim Rand kann die Farbe geändert werden.
Hier Bilder:
hier die geänderten Scripte: als Text
Anlegen der Datenpunkte:
DP_Uhr.txt
Die Uhr
Die_Uhr.txt
Die View
Uhr_Rund.txt
Hoffe ich habe nichts vergessen.
Mfg
Wastl
Hallo zusammen,
hier nun meine neue Vis. Ist noch zum Teil in Arbeit aber wenn Interesse kommt der Rest.
Bei Fragen und Kommentaren keine Scheu.
Wieder möchte ich dem Forum für Anregung, Hilfe herzlichst Danken!
Zum Wettersymbol im Kopf, wird jede Stunde aktualisiert und bei Sonnenuntergang durch eine Darstellung des Mondes ersetzt.
Bild 3:
Position: darüber kann man festgelegte Positionen der Kamera ansteuern.
Sensor Robby: So eingestellt, das die Kamera (wenn Robby erkannt) immer verfolgt.
Bild 4:
Noch in Arbeit.
Bild 5:
Ist der Anzeige meiner Wetterstation nachempfunden.
Kino Bühne: hier erfolgt im Wechsel von 10 Sek. die Information zu den Räumen.
Bild 9:
Anzeige der Wetterdaten von 2007 – heute.
Oben alle Monate des ausgewählten Jahres, unten alle Tage des ausgewählten Monats.
Bild 10:
Wetterdaten des ausgewählten Monats.
Bild 11:
Höchstwerte der Jahre 2007 – heute.
Bilder 13-17:
Grafische Aufbereitung der Wetterdaten.
Bild 18:
Zustände und wenn vorhanden aktueller Verbrauch nach Typ sortiert.
Nochmals vielen Dank und ich hoffe es gefällt einigen von Euch.
MfG
Wastl
p.s.
Würde gerne umsteigen auf Vis2. Habe dazu eine Frage:
Hallo zusammen,
betrifft "HAM-Adapter".
So ist die Original Datenstruktur unter "ham.0.xxx" für einen Shelly:
Es geht nur um den Eintrag "name:"
Original (Auszug)
"ham.0.Licht-Flur-unten.Power-Meter-1.Current-Consumption": {
"type": "state",
"common": {
"type": "number",
"unit": "W",
"min": 0,
"max": 12000,
"read": true,
"write": false,
"role": "value",
***"name": "Current Consumption",***
"ham.0.Licht-Flur-unten.Switch-1.On": {
"type": "state",
"common": {
"type": "boolean",
"read": true,
"write": true,
"role": "switch",
***"name": "On",***
"unit": "",
Ich ändere den Namen, siehe unten.
Neu (Auszug)
"ham.0.Licht-Flur-unten.Power-Meter-1.Current-Consumption": {
"type": "state",
"common": {
"type": "number",
"unit": "W",
"min": 0,
"max": 12000,
"read": true,
"write": false,
"role": "value",
***"name": "P-Flur_Unten-Decke",***
"ham.0.Licht-Flur-unten.Switch-1.On": {
"type": "state",
"common": {
"type": "boolean",
"read": true,
"write": true,
"role": "switch",
***"name": "Z-Flur_Unten-Decke",***
"unit": "",
Alles ist OK und läuft bis ein Neustart des Adapters erfolgt, dann sind die Namen wieder im Originalzustand.
Wie kann man daran etwas Ändern?
Für Euere Antworten schon mal vielen Dank!
MfG
Wastl
Hallo zusammen,
bin gerade dabei meine Vis zu überarbeiten und hätte da eine Frage:
Ich habe ein "materialdesign-Table" und möchte bei der Darstellung die max. Werte Farbig hervorheben.
zB; Im Jahr 2020 Max. Windböe.
Ist das möglich?
Für Antworten danke ich schon im voraus.
MfG
Wastl
Danke für die schnellen Antworten.
MfG Wastl
Hallo zusammen,
bekomme folgende Fehler bei einem Neustart vom Javascript-Adapter:
javascript.0
2023-12-30 10:32:04.342 error WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
javascript.0
2023-12-30 10:32:04.340 error npm
javascript.0
2023-12-30 10:32:04.103 error WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
javascript.0
2023-12-30 10:32:04.102 error npm
javascript.0
2023-12-30 10:32:03.986 error WARN deprecated node-inspect@2.0.0: This module is part of Node.js core and does not need to be installed separately. It is now unmaintained.
javascript.0
2023-12-30 10:32:03.985 error npm
javascript.0
2023-12-30 10:32:03.762 error WARN deprecated har-validator@5.1.5: this library is no longer supported
javascript.0
2023-12-30 10:32:03.760 error npm
Hier noch die Systemdaten unter "Host"
js-Controller: 5.0.17
Plattform: linux
Betriebssystem: linux
Architektur: arm64
CPUs: 4
Geschwindigkeit: 1500 MHz
Modell: Cortex-A72
RAM: 3.7 GB
System-Betriebszeit: 9 T. 20:21:39
Node.js: v18.19.0
time: 1703928941090
NPM: 10.2.3
Adapter-Anzahl: 519
Datenträgergröße: 469.2 GB
Freier Festplattenspeicher: 465.0 GB
Aktive Instanzen: 9
Pfad: /opt/iobroker/
Betriebszeit: 9 T. 20:28:02
Könnt Ihr mir helfen, ich weiß nicht was diese Fehlermeldungen bedeuten?
Vielen Dank im voraus.
MfG
Wastl
Die Infos die ich vom Sensor brauche, z.B:
Bei einer Schaltbaren Steckdose
Zustand Switch
wenn vorhanden Verbrauch, Automatische Ausschaltzeit usw.
Von einem Thermostat ungefähr 5 Werte usw.
Im Moment versuche ich Aufzählungen und einem Json-Dp zu verbinden, also aus der Aufzählung den Namen des Sensoren, im Json suchen und alle vorgesehenen Werte auslesen.
Ich glaube, das z.B. Punkt 2 doch die meisten Ressourcen verbraucht, da das Script doch dauernd auf der Lauer liegt.
Aber ich habe ja keine große Ahnung von der Geschichte.
MfG
Wastl
Hallo zusammen,
ich bin gerade dabei mein Projekt zu überarbeiten.
Mit der Zeit sammeln sich doch eine Menge Sensoren an, die überwacht werden wollen (zurzeit ca. 100 Stück).
Nun meine Frage:
Für mich habe ich 3 Möglichkeiten gefunden Datenpunkte zu überwachen:
1: Jeder Dp wird eigens überwacht, also wie
on({id: DPWetter + 'Temperatur'}, async function (obj) {
usw.
2: Ich überwache z.B. alle Bshb und suche mir den passenden raus
on(/^bshb\.0\.hdm:HomeMaticIP:.*\.ShutterContact.value/, function(dp) usw
3: Ich erstelle eine Aufzählung mit den Relevanten Dp und überwache diese
$('state[id=*](functions=raum_temperatur)').on(function(dp) { usw.
Oder man schaut per schedule alle z.B. 10 Sekunden nach was los ist.
Welche Methode ist nun Ressourcen schonender oder gibt es noch andere mir unbekannte Methoden der Dp-Überwachung?
Für Eure Hilfe vielen Dank im Voraus
MfG
Wastl
Hallo zusammen,
let fenster = JSON.parse(getState("0_userdata.0.vis.StatusHaus.Sensoren.BSH.Fenster.jsonSensoren").val);
let dpFensterStatus = "0_userdata.0.vis.StatusHaus.Sensoren.BSH.Fenster.";
on(/^bshb\.0\.hdm:HomeMaticIP:.*\.ShutterContact.value/, function(dp) {findeSensor(dp)});
on(/^bshb\.1\.hdm:HomeMaticIP:.*\.ShutterContact.value/, function(dp) {findeSensor(dp)});
function findeSensor(dp) {
let sensor = dp.name; //F_Wohnzimmer
let result = JSON.stringify(fenster.find( ({ name }) => name === sensor ));
let links = JSON.parse(result).links;
log((links[0].unten)) //Ausgabe bshb.0.hdm:HomeMaticIP:3014F711A000009D58599964
};
/*
Auszug Struktur JSON "fenster"
[
{
"name": "F-Wohnzimmer",
"links": [
{
"oben": "bshb.0.hdm:HomeMaticIP:3014F711A000009A18590405",
"unten": "bshb.0.hdm:HomeMaticIP:3014F711A000009D58599964"
}
]
},
{
"name": "F-Schlafzimmer",
"links": [
{
"oben": "bshb.0.hdm:HomeMaticIP:3014F711A000009A18592597",
"unten": "bshb.0.hdm:HomeMaticIP:3014F711A000009BB85FD526"
}
],
"rechts": [
{
"oben": "bshb.0.hdm:HomeMaticIP:3014F711A000009A18592781",
"unten": "bshb.0.hdm:HomeMaticIP:3014F711A000009BB85FD559"
}
]
} und so weiter
]
*/
hier der Anfang eines Javascript um einen Datenpunkt "json" auszulesen:
unten ein Teil der Struktur des Json.
Das Script funktioniert, aber was muß ich machen um z.B. bei "F-Schlafzimmer" zu erkennen es gibt "links" und "rechts" bzw. bei "F-Wohnzimmer" gibt es nur "links".
Für Eure Hilfe wie immer vielen Dank im voraus.
MfG
Wastl
Hallo,
habe eine Frage ans Forum:
Wer hat Bosch Smart-Home im Einsatz mit folgender Zusammensetzung:
Eine Bridge Gen. 1,
mit einem der folgenden Sensoren:
Fenster-Türkontakte Gen. 1,
Lichtsteuerung Gen.1,
Steckdosen Gen.1,
Universalschalter Gen.1,
Zwischenstecker Gen.1 und die Software Version "10.15.9217-28836" für die Bridge?
Ich habe mal nachgeforscht und ich bin nicht der einzige der obengenannte Probleme hat.
Also, möglicher Weise Vorsicht bei der Aktualisierung der obengenannten Software-Version.
Bitte um Meldungen.
MfG
Wastl