NEWS
Test Adapter lovelace v1.2.x
-
@nukleuz said in Test Adapter lovelace v1.2.x:
Hallo zusammen,
ist es möglich einen Datenpunkt, dem sein Inhalt ein Base64 codiertes Bild ist, in Lovelace anzuzeigen?
data:image/jpeg;base64,/9j/2wCEAAsHCAoIBwsKCQoM..................................................................
Wenn nicht, dann bitte ich um Hilfe bei folgender Problemstellung:
Ich möchte nach Bewegungserkennung meiner Reolink-Kamera einen Snapshot machen - das Bild speichern und mir in Lovelace anzeigen lassen. Ich habe das Bild als Base64-Code in einem Datenpunkt und auch als jpg/png im Ordner /home/iobroker/snapshot.jpg liegen.Gebe ich diesen Pfad (/home/iobroker/snapshot.jpg) in der Card -> Picture/Picture Entity an, wird mir nichts angezeigt.
Ich habe auch schon versucht das Bild in /cards/ abzulegen, doch da funktioniert es ebenfalls nicht bzw. es wird mir immer nur das erste gespeicherte Bild angezeigt, aber nie das aktuellste. Datei wird bei Bewegung überschrieben.Also, wo kann ich es ablegen damit es angezeigt wird (vielleicht auch zu einfach oder nur ne Blockade :))?
Wie habt ihr sowas gelöst?Danke für Infos vorab.
Hab grad noch eine Lösung in Discord mit Markdown Card gesehen:
https://cdn.discordapp.com/attachments/767748795102396420/828438285138919424/unknown.png -
Da setzt er mir lediglich den String vom Datempunkt rein - interpretiert es also nicht als Bild.
Vielen Dank für deine Bemühungen.
Ich teste heute Abend erst weiter mit den anderen Vorschlägen - die Arbeit ruft
-
das base64 gedöns geht aber grundsätzlich für die Darstellung im Browser? (Sonst ggf. mal hiermit prüfen: https://base64.guru/converter/decode/image/jpg
)bzw. mal als Test so, ob das Bild überhaupt angezeigt wird:
https://cdn.discordapp.com/attachments/767748795102396420/828424087784128532/unknown.png//Edit:
Ok, ich hatte wohl etwas missverstanden. Bei dem anderen User steht wohl noch mehr HTML im Datenpunkt, versuch es mal so ca.:type: markdown content: '<img src="{0_userdata.0.Kameras.Reoling-Cam-Hof.cam.image}" />'
-
Geilo - das funktioniert 1A.
Vielen Dank für deinen Support!
type: markdown content: '<img src="{0_userdata.0.Kameras.Reolink-Cam-Hof.cam.image}" />' title: Test
-
Hallo,
hab mir grad mit Blockly eine kleine Tabelle für den Birthdays Adapter gebastelt.
Wollte das Blockly nur kurz zu Verfügung stellen.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="(m}dH@gw]g]CrCq4X:^O">Liste</variable> <variable id="^u_U-Az-`mhCz~(F_#oT">text</variable> <variable id="x(8OtWm-n$bsM}t4],DO">i</variable> <variable id="B=:MPlbZ]`U`oQR_H1ZO">obj</variable> <variable id="|9,SdA]rgGmj%K}^fKl*">Alter</variable> <variable id="2xs$M*SFSh^lkODi*Z,g">Name</variable> <variable id=";RHJ=)9w[N*6ii2YVbv#">Tage_bis_Geburtstag</variable> <variable id="[hejW*.Wk;gQUlv)`eJ|">Tag_Monat</variable> <variable id="e}Pk:{7j{A~j7#a%49!f">Geburtsjahr</variable> </variables> <block type="on" id="ubL@LBF!,o_rkk4*V?$c" x="263" y="38"> <field name="OID">birthdays.0.summary.json</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="W?1q7FaV,*wmZaIkPQ*o"> <field name="VAR" id="(m}dH@gw]g]CrCq4X:^O">Liste</field> <value name="VALUE"> <block type="convert_json2object" id="-+dC_oJ;-(a!X+qq3ItL"> <value name="VALUE"> <block type="on_source" id="W9LY54G8%@AW$,Dv.c1;"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="variables_set" id="*Gbs7`LVq2ggdi|-gk1#"> <field name="VAR" id="^u_U-Az-`mhCz~(F_#oT">text</field> <value name="VALUE"> <block type="text" id="D2QaAKbM6V%.nH8G!WO8"> <field name="TEXT"></field> </block> </value> <next> <block type="controls_for" id="VAh4_5skpQ(-58)cTsN5"> <field name="VAR" id="x(8OtWm-n$bsM}t4],DO">i</field> <value name="FROM"> <shadow type="math_number" id="UtEruMTPhi^T~g$#4=X%"> <field name="NUM">1</field> </shadow> </value> <value name="TO"> <shadow type="math_number" id="SL!L;!$5LE6b.-i2{-x8"> <field name="NUM">10</field> </shadow> <block type="lists_length" id="IA8x7(aD91K?{^4e{t?p"> <value name="VALUE"> <block type="variables_get" id="Uw=RBKOt~o^7pvz5@?jp"> <field name="VAR" id="(m}dH@gw]g]CrCq4X:^O">Liste</field> </block> </value> </block> </value> <value name="BY"> <shadow type="math_number" id="X?ku5(f{C?`POZ9}Ykn$"> <field name="NUM">1</field> </shadow> </value> <statement name="DO"> <block type="variables_set" id="?x8p%;#1!zl^M{*-WeD_"> <field name="VAR" id="B=:MPlbZ]`U`oQR_H1ZO">obj</field> <value name="VALUE"> <block type="lists_getIndex" id="!p81u1HNh}swg_ZCMWGd"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="3ETVK*E:VqCH}#kblamq"> <field name="VAR" id="(m}dH@gw]g]CrCq4X:^O">Liste</field> </block> </value> <value name="AT"> <block type="variables_get" id="4ZY9FTQA,JoJx!nEg^nc"> <field name="VAR" id="x(8OtWm-n$bsM}t4],DO">i</field> </block> </value> </block> </value> <next> <block type="variables_set" id="_?!N}.aye8u=,XQ}5rY{"> <field name="VAR" id="|9,SdA]rgGmj%K}^fKl*">Alter</field> <value name="VALUE"> <block type="get_attr" id="V=ixw;0O?aW0sXtNbLyR"> <value name="PATH"> <shadow type="text" id="XE}T12XOKYB-U6A8etD("> <field name="TEXT">age</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="Aqx9nyk[/uZhLuG|WKW]"> <field name="VAR" id="B=:MPlbZ]`U`oQR_H1ZO">obj</field> </block> </value> </block> </value> <next> <block type="variables_set" id="C@RzukD_z2Vc[/_q1s4q"> <field name="VAR" id="2xs$M*SFSh^lkODi*Z,g">Name</field> <value name="VALUE"> <block type="get_attr" id="si%nmaEYZ8yF2`)aXAA["> <value name="PATH"> <shadow type="text" id="Vv?R@/OzO]p40i%9sCnd"> <field name="TEXT">name</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="Dv389p@`@/Y3}]gx``_e"> <field name="VAR" id="B=:MPlbZ]`U`oQR_H1ZO">obj</field> </block> </value> </block> </value> <next> <block type="variables_set" id=")z0aBTEtrg5l23)8iHRs"> <field name="VAR" id=";RHJ=)9w[N*6ii2YVbv#">Tage_bis_Geburtstag</field> <value name="VALUE"> <block type="get_attr" id="`wPRO=fu4+XJSLOOaSO0"> <value name="PATH"> <shadow type="text" id="%IZ(eKv9iMml(NI-f]5P"> <field name="TEXT">daysLeft</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="3Hno*M89!AaJIE6(3=33"> <field name="VAR" id="B=:MPlbZ]`U`oQR_H1ZO">obj</field> </block> </value> </block> </value> <next> <block type="variables_set" id="J/6:.#/@k1b,K1u(Bpq/"> <field name="VAR" id="[hejW*.Wk;gQUlv)`eJ|">Tag_Monat</field> <value name="VALUE"> <block type="get_attr" id=";tsY?ta87G!Ip{x3uz#T"> <value name="PATH"> <shadow type="text" id="HmVz%-OkrSIKER](18V:"> <field name="TEXT">dateFormat</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="Vq9etR=Lc?:t?%0IUjP9"> <field name="VAR" id="B=:MPlbZ]`U`oQR_H1ZO">obj</field> </block> </value> </block> </value> <next> <block type="variables_set" id="$+EHiR+SK#`|(Fs[.{n~"> <field name="VAR" id="e}Pk:{7j{A~j7#a%49!f">Geburtsjahr</field> <value name="VALUE"> <block type="get_attr" id="vr3`]9_k0Ke3+G;BPe0$"> <value name="PATH"> <shadow type="text" id="g}99n.xJZe2a;])BF`jI"> <field name="TEXT">birthYear</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="C?}|MWY(:zJSY(62Q!L-"> <field name="VAR" id="B=:MPlbZ]`U`oQR_H1ZO">obj</field> </block> </value> </block> </value> <next> <block type="variables_set" id=",AX3xaQpP,RI_FeH!Xx|"> <field name="VAR" id="^u_U-Az-`mhCz~(F_#oT">text</field> <value name="VALUE"> <block type="text_join" id="oc7)%`;1Y7hZ,{LSK@n^"> <mutation items="12"></mutation> <value name="ADD0"> <block type="variables_get" id="SjYSlvJOrj+1T]NFWCL0"> <field name="VAR" id="^u_U-Az-`mhCz~(F_#oT">text</field> </block> </value> <value name="ADD1"> <block type="text" id="@UfRgRh#-n,^e{wnY,#$"> <field name="TEXT"><td align=left></field> </block> </value> <value name="ADD2"> <block type="variables_get" id="bJfAhLxPp7#nS|JLsb$2"> <field name="VAR" id="2xs$M*SFSh^lkODi*Z,g">Name</field> </block> </value> <value name="ADD3"> <block type="text" id="SmFyDO|0Dgd0$?eaA`Sg"> <field name="TEXT"></td><td align=left></field> </block> </value> <value name="ADD4"> <block type="variables_get" id=";1!SxOtb)P*,f@2txLG+"> <field name="VAR" id="[hejW*.Wk;gQUlv)`eJ|">Tag_Monat</field> </block> </value> <value name="ADD5"> <block type="text" id="3Q6jnW~yh]:hVCAUBoKb"> <field name="TEXT"></td><td align=left></field> </block> </value> <value name="ADD6"> <block type="variables_get" id="7r#.X6VO;Q,F#?pc,v0W"> <field name="VAR" id="e}Pk:{7j{A~j7#a%49!f">Geburtsjahr</field> </block> </value> <value name="ADD7"> <block type="text" id="+vLQ9vR)6X{N-nzVKvN^"> <field name="TEXT"></td><td align=left></field> </block> </value> <value name="ADD8"> <block type="variables_get" id="A]OKm4e`3x(zLzn6s(QN"> <field name="VAR" id="|9,SdA]rgGmj%K}^fKl*">Alter</field> </block> </value> <value name="ADD9"> <block type="text" id="r~]`+Ui@uG2}fm0!SCcO"> <field name="TEXT"></td><td align=left></field> </block> </value> <value name="ADD10"> <block type="variables_get" id="fIhTLcQB}M=fC^B;!y[3"> <field name="VAR" id=";RHJ=)9w[N*6ii2YVbv#">Tage_bis_Geburtstag</field> </block> </value> <value name="ADD11"> <block type="text" id="0ihN7QSrFrH1sgNZgp;f"> <field name="TEXT"></tr> </field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="update" id="~ezoSMAi3J%e*eL}tsO."> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.VIS.Tabellen.Geburtstage</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id=")4[foVL+;!xdhFv($WVn"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="rqH.Tp+,./Gm@C8e99ZY"> <field name="TEXT"><table> <tr> <th width=100 align=left>Name</th> <th width=60 align=left>Datum</th> <th width=60 align=left>Jahr</th> <th width=60 align=left>Alter</th> <th width=60 align=left>In Tagen</th> </tr> <tr> <td colspan="5"><hr></td> </tr> <tr></field> </block> </value> <value name="ADD1"> <block type="variables_get" id="4R$*aP-tIeoXAU7-OHcp"> <field name="VAR" id="^u_U-Az-`mhCz~(F_#oT">text</field> </block> </value> <value name="ADD2"> <block type="text" id="3Nljk,tpV27x(#;V?7mB"> <field name="TEXT"> </table></field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
Im letzten Text erstellen Block findet Ihr im ersten Textbereich mehrnals was von "th width=......", dort könnt Ihr die Spaltenbreiten an eure Bedürfnisse anpassen. Wenn dort nur eine Zahl steht gebt Ihr Pixel an, mit einem % die Spaltenbreite in %.
-
Hallo,
ich fange gerade an mich mit iobroker zu beschäftigen und wollte von meinen ersten Sensoren mal eine VISU bauen. Dabei bin ich über lovelace gestolpert, was mir optisch am Besten gefällt.
Ich habe via git nun Version 1.5 von iobroker lovelace installiert. Dieser 1.2 Thread hier scheint aber der aktuelle zu sein. Habe ich nun eine falsche Version um zu starten? Kann dann jemand noch nen Beginner Guide empfehlen?
Grüße,
Stefan -
Hallo,
mit der 1.5 kannst du gut starten.
Eine gute Anleitung findest du hier im ThreadIn meiner Signatur findest du einen Link zu Beispielen von anderen Usern mit dem entsprechenden Code.
Da kann man sich immer schön was abschauen und bei lernen.Glaube hier der Thread ist auch der aktuellste.
-
Danke David - das ist super. Gibt es einen Tipp, welchen Weg man für die Entitäten gehen sollte?
- Automatische Erzeugung von Entitäten
- Manuelle Zuordnung von Entitäten
- Erzeugung von Entitäten über den Adapter "TODO"
-
@disaster123 said in Test Adapter lovelace v1.2.x:
Automatische Erzeugung von Entitäten
Versuche ich wo es nur geht. Schon alleine, weil manuell nicht immer alle Funktionen klappen (zB dass bei einem Fenster offen/geschlossen steht, anstatt an/aus.)
Zudem habe ich mehrere lovelace Instanzen am laufen, bin zu faul es immer überall zu pflegen.Manuelle Zuordnung von Entitäten
Geht aus meiner Meinung oben hervor ^^
Erzeugung von Entitäten über den Adapter "TODO"
Kenne ich nicht.
-
Super danke. Ich wundere mich warum mein Wetter MultiSensor irgendwie drei verschiedene Entitäten bekommen hat. Sollte es nicht "ein" Device / eine Entität mir mehreren Eigenschaften sein?
-
Die Entitäten sind manuell angelegt, da lassen sich Datenpunkte nicht "kombinieren".
Das geht nur mit der automatischen Erkennung.
Aber nur, wenn lovelace das Gerät (nicht explizit die Marke, sondern den Typ) auch kennt. -
@david-g Hilfe neh ich wollte nichts per Hand anlegen... was hab ich falsch gemacht? Stehe da gerade auf dem Schlauch.
-
@david-g siehe hier:
-
Die Entitäten mit dem blauen Schlüssel sind manuell angelegt.
Mit dem grauen Schlüssel automatisch erkannt.Hier siehst du beide Varianten.
Manuell angelegt hast du die hier:
Wenn die Geräte automatisch erkannt werden, braucht man das da nicht machen.
Die Funktion die du dem Objekt gibst, muss lovelace kennen, dann erkennt er es von selber.
Der Raum ist auch Pflicht.Steht alles sehr schön in dem Leitfaden erklärt.
-
@david-g sagte in Test Adapter lovelace v1.2.x:
Die Entitäten mit dem blauen Schlüssel sind manuell angelegt.
Mit dem grauen Schlüssel automatisch erkannt.OK danke - graue gibt es bei mir gar nicht.
Wenn die Geräte automatisch erkannt werden, braucht man
das da nicht machen.Die Funktion die du dem Objekt gibst, muss lovelace
kennen, dann erkennt er es von selber.
Der Raum ist auch Pflicht.Steht alles sehr schön in dem Leitfaden erklärt.
Das habe ich auch genau wie im Leitfaden gemacht - bilde ich mir ein - scheinbar aber nicht? Ich sehe den Fehler nicht. Als Funktion habe ich Weather genommen - siehe mein Screenshot von vorhin.
-
Du musst noch eine Rolle vergeben, die beschreibt was es für ein Wert ist.
Die Werte können ja alles sein.Der Accuweather-Adapter legt es zb so an
So ist es bei meinem Heizungsthermistat
-
@david-g sagte in Test Adapter lovelace v1.2.x:
Du musst noch eine Rolle vergeben, die beschreibt was es für ein Wert ist.
Die Werte können ja alles sein.Der Accuweather-Adapter legt es zb so an
Das klingt total sinnvoll - aber geht nicht... es wird mir in dem Feld kein value.temperature angeboten.
Siehe:
Edit:
Ah - das scheint ein Freitextfeld zu sein und es werden einem nur die bisher genutzten angezeigt. Hier gibt es eine komplette Liste:
https://github.com/ioBroker/ioBroker/blob/master/doc/STATE_ROLES.mdMeine Fibaro Schalter werden z.B. automatisch erkannt als Binary Switch aber dort fehlt die current watt usage und kwh Verbraucht...
-
Einfach rein tippen.
Man muss sich nicht an die Auswahl halten.Wobei es keine Karte gibt, die deine 3 Werte sinnig anzeigt.
Da ist es vermutlich eh besser, die Entitäten einzeln zu haben. -
@david-g sagte in Test Adapter lovelace v1.2.x:
Einfach rein tippen.
Man muss sich nicht an die Auswahl halten.Wobei es keine Karte gibt, die deine 3 Werte sinnig anzeigt.
Da ist es vermutlich eh besser, die Entitäten einzeln zu haben.DANKE - https://github.com/ioBroker/ioBroker/blob/master/doc/STATE_ROLES.md hilft... Ich teste es.
-