Hallo,
ich hab ein XBMC Modul geschrieben mit dem man FHEM steuern kann. (ein modul für XBMC nicht für FHEM)
Hintergrund ist der: Mein NAS läuft nicht dauernt. Kann aber und via FHEM angeschaltet werden. Relais board an der Fritzbox(FHEM).
Jetzt war es immer notwendig per Smartphone oder PC das NAS auf "on" zu schalten.
Das geht jetzt gleich aus dem XBMC raus.
Mal schauen wie das mit dem add-on funktioniert. Vielleicht bekomm ich noch mehr implementiert..
gruß
Zwiebel
Hallo,
cool.
Ab ins Wiki damit bitte.
Grüße
Coole Sache,
wollte gestern auch was dazuprogrammieren, aber naja meine kentnisse in Python sind doch recht begrenzt.
genial wäre eine Steuerung der lichter, wenn z.b. Der Film anfängt usw.
Und eventuell mehrere geräte die man einschalten bzw. ausschalten kann, die man hinzufügt...
Geht das?
BG,
Mark
Zitat von: reacend am 18 Oktober 2013, 21:20:02
genial wäre eine Steuerung der lichter, wenn z.b. Der Film anfängt usw.
Yep,
Ich hoffe Zwiebel macht noch weiter.
Aber Dank
copy and paste bin ich auf das hier gekommen:
http://www.jordanhackworth.com/home-automation-with-xbmc/ (http://www.jordanhackworth.com/home-automation-with-xbmc/)
In
~/.xbmc/scripts/ folgenden Code als
playeraction.py speichern
import xbmc,xbmcgui
import subprocess,os
class MyPlayer(xbmc.Player) :
def __init__ (self):
xbmc.Player.__init__(self)
def onPlayBackStarted(self):
if xbmc.Player().isPlayingVideo():
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A on"')
def onPlayBackEnded(self):
if (VIDEO == 1):
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A off"')
def onPlayBackStopped(self):
if (VIDEO == 1):
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A off"')
def onPlayBackPaused(self):
if xbmc.Player().isPlayingVideo():
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A off"')
def onPlayBackResumed(self):
if xbmc.Player().isPlayingVideo():
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A on"')
player=MyPlayer()
VIDEO = 0
while not xbmc.abortRequested:
if xbmc.Player().isPlaying():
if xbmc.Player().isPlayingVideo():
VIDEO = 1
else:
VIDEO = 0
xbmc.sleep(1000)
Den wget-String natürlich anpassen.
In
~/.xbmc/userdata/ noch folgendes als
autoexec.pyimport os
import xbmc
xbmc.executescript('special://home/scripts/playeraction.py')
Funktioniert bei mir ausgezeichnet.
Gruss
Hans
Cool das gefällt mir :)
So kann ich theater Light simulieren :)
Hi,
mit dem XBMC Modul (ab sofort im SVN, sollte ab morgen übers update ausgeliefert werden) kann man auch auf play, pause, etc. reagieren. Hier ein Beispiel:
define xbmc_lighton notify xbmcDeviceName.playStatus:.playing set Lampenname on
define xbmc_lightoff notify xbmcDeviceName.playStatus:.playing set Lampenname off
Das ist eventuell auch interessant für euch.
Gruß
Dennis
Cool wäre so ein Dashboard für Xbmc, wo man sich die Infos die man gerne hätte am XBMC anschauen kann. Temperaturen, sind die Fenster offen oder zu o.ä.
Ja und auch steuern kann, das wäre nice.
Da fällt mir ein ich werde gleich mal ein notify schreiben das die Heizung nicht auf 17°C runterregelt, solange der XBMC spielt...
Gute Idee :-)
Gesendet von meinem Nexus 4 mit Tapatalk
Zitat von: strauch am 09 Januar 2014, 11:17:49
Cool wäre so ein Dashboard für Xbmc, wo man sich die Infos die man gerne hätte am XBMC anschauen kann. Temperaturen, sind die Fenster offen oder zu o.ä.
Gibt es, allerdings nur rudimentär. Ist auch schon 2 Jahre alt und bedingt ein Erweitern/Ändern des Quellcodes sowie ein sehr mühsames Gefummel im Code (xml) des Skins.
https://github.com/Memphiz/script.xbmc.fhem/tree/master/script.xbmc.fhem (https://github.com/Memphiz/script.xbmc.fhem/tree/master/script.xbmc.fhem)
Gruß
Hans
Zitat von: Hans Franz am 21 Oktober 2013, 02:35:55
Yep,
Ich hoffe Zwiebel macht noch weiter.
Aber Dank copy and paste bin ich auf das hier gekommen:
http://www.jordanhackworth.com/home-automation-with-xbmc/ (http://www.jordanhackworth.com/home-automation-with-xbmc/)
In ~/.xbmc/scripts/ folgenden Code als playeraction.py speichern
import xbmc,xbmcgui
import subprocess,os
class MyPlayer(xbmc.Player) :
def __init__ (self):
xbmc.Player.__init__(self)
def onPlayBackStarted(self):
if xbmc.Player().isPlayingVideo():
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A on"')
def onPlayBackEnded(self):
if (VIDEO == 1):
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A off"')
def onPlayBackStopped(self):
if (VIDEO == 1):
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A off"')
def onPlayBackPaused(self):
if xbmc.Player().isPlayingVideo():
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A off"')
def onPlayBackResumed(self):
if xbmc.Player().isPlayingVideo():
os.system('wget "http://raspberrypi:8083/fhem?cmd=set ELRO_F0000_A on"')
player=MyPlayer()
VIDEO = 0
while not xbmc.abortRequested:
if xbmc.Player().isPlaying():
if xbmc.Player().isPlayingVideo():
VIDEO = 1
else:
VIDEO = 0
xbmc.sleep(1000)
Den wget-String natürlich anpassen.
In ~/.xbmc/userdata/ noch folgendes als autoexec.py
import os
import xbmc
xbmc.executescript('special://home/scripts/playeraction.py')
Funktioniert bei mir ausgezeichnet.
Gruss
Hans
Echt Klasse :-) Es läuft bei mir....
Noch eine Idee wie man das ganze ich Cinema Experience einbauen kann?
Zitat von: SirMarco am 26 Januar 2014, 13:22:07
Noch eine Idee wie man das ganze ich Cinema Experience einbauen kann?
Cinema Experience habe ich noch nicht benutzt, aber mir gerade 'mal angeschaut(OK, nur quergelesen):Die Datei
home_automation.py sieht vielversprechend aus und scheint genau dafür gedacht zu sein:.
# place code below this lineGruß
Hans
Hallo,
Ich hab' da 'mal 'was gebastelt..
Um nicht mühsam für jeden Skin in XBMC den XML-Code zu bearbeiten, wie es für das Script von Memphiz erforderlich ist, habe ich es etwas umgeschrieben.
Es ist jetzt ein Programm in XBMC und zieht sich seine Informationen aus einem Dummy mit einem userattr namens xbmcInfo.
Das globale Attribut userattr muss mit "xbmcInfo" erweitert werden.
Entweder händisch oder so:
{fhem ("attr global userattr $attr{global}{userattr}"." xbmcInfo")}
Dann einen Dummy definieren und ihm das Attribut xbmcInfo verpassen.
Schema:
attr <dummy-name> xbmcInfo <TYPE> <Reading[|Alias]> <[Reading[|Alias]]>...
Beispiele:
define xbmc_dummy dummy
attr xbmc_dummy xbmcInfo CUL_WS temperature|Temperatur humidity|Luftfeuchte
define xbmc_dummy2 dummy
attr xbmc_dummy2 xbmcInfo PID20 actuation|Ventil desired|Soll measured|Ist delta p_p|P-Anteil p_i|I-Anteil
Gruß
Hans
Edith:
Version mit jsonlist2 statt xmllist
Sollte jetzt auch in Gotham installierbar sein.
Cool erst einmal Danke für das Skript. Allerdings bekomme ich beim Empfangen der XML Liste einen Fehler angezeigt. Any hints?
14:50:57 T:2706373440 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'xml.parsers.expat.ExpatError'>
Error Contents: not well-formed (invalid token): line 1479, column 67
Traceback (most recent call last):
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/fhemmain.py", line 48, in <module>
fetchFhem()
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/fhemmain.py", line 41, in fetchFhem
ret = fhem_fetch(hostip, hostport, telnetpasswd)
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 65, in fhem_fetch
ret = fhem_parseXML(xmlstr)
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 90, in fhem_parseXML
fhemcontents = xmltree.fromstring(xmlstr)
File "/home/murdoc/.xbmc/addons/script.module.elementtree/lib/elementtree/ElementTree.py", line 1012, in XML
return api.fromstring(text)
File "/home/murdoc/.xbmc/addons/script.module.elementtree/lib/elementtree/ElementTree.py", line 182, in fromstring
parser.feed(text)
File "/home/murdoc/.xbmc/addons/script.module.elementtree/lib/elementtree/ElementTree.py", line 1292, in feed
self._parser.Parse(data, 0)
ExpatError: not well-formed (invalid token): line 1479, column 67
-->End of Python script error report<--
Hallo,
Sorry, aber ich befürchte, deine XML-Liste ist nicht ganz korrekt. Hatte ich vor Monaten auch einmal, weiß aber die genauen Umstände nicht mehr. Ist oft schwer zu finden :'(
Gruß
Hans
Hm und nun? Ich habe mir die LIste mit xmllist angeschaut und wenn ich sie im Browser öffne meckert diese <> an u.a. bei den readingsgroup.
Wie kann ich vorgehen?
Der Browser ist zu Validierung, denke ich, weniger geeignet. Du könntest es mit einem Online-Validator versuchen, aber die werfen auch bei funktionierenden XML-Listen einige Fehler aus. Aber vlt. kannst du das Problem damit einkreisen.
Bei mir war es damals, so glaube ich mich zu erinnern, ein verwaister Eintrag auf ein nicht mehr genutztes und vergessenes Device ::) mit fehlerhaftem Eintrag.
Die < und > Zeichen aus readingGroups habe auch ich massenhaft. Sie werden eigentlich durch "<" und ">" ersetzt.
Gruß
Hans
Zitat von: Hans Franz am 02 März 2014, 16:59:50
Der Browser ist zu Validierung, denke ich, weniger geeignet. Du könntest es mit einem Online-Validator versuchen, aber die werfen auch bei funktionierenden XML-Listen einige Fehler aus. Aber vlt. kannst du das Problem damit einkreisen.
Bei mir war es damals, so glaube ich mich zu erinnern, ein verwaister Eintrag auf ein nicht mehr genutztes und vergessenes Device ::) mit fehlerhaftem Eintrag.
Die < und > Zeichen aus readingGroups habe auch ich massenhaft. Sie werden eigentlich durch "<" und ">" ersetzt.
Gruß
Hans
Kannst du mir einen Tipp geben wie ich die nicht mehr genutzten Devices finde?
Hallo,
Das wird schwierig. Ich weiß nicht, wie ich den Fehler einer nicht zu parsenden Liste bei mir provozieren könnte und bin mir deshalb auch nicht sicher, ob die Fehlermeldung:
Error Contents: not well-formed (invalid token): line 1479, column 67
auf die Zeile in der XML-Liste hinweist.
Wenn ja: Um welches Device handelt es sich? Stimmt bei den Attributen alles?
Gruß
Hans
Hilft dir meine xmllist?
Eventuell. Denk an die Code-Tags oder per e-mail.
Gruß
Hans
Ok ich schicke es dir per Email. (schau mal nach deinen PMs) Danke im Voraus für deine Hilfe.
Hans ich habe mal versucht (wirklich versucht, ich glaube ich bin zu alt für den Wiki Code :)) einen XBMC Wiki Artikel zu erstellen.
http://www.fhemwiki.de/wiki/XBMC (http://www.fhemwiki.de/wiki/XBMC)
Hallo Patrick,
Zitat von: P.A.Trick am 03 März 2014, 10:38:49
Hans ich habe mal versucht (wirklich versucht, ich glaube ich bin zu alt für den Wiki Code :)) einen XBMC Wiki Artikel zu erstellen.
Hmm, das ist hier etwas Off-Topic. Das XBMC-Modul ist ja ein FHEM-Modul. Hier geht es um XBMC-AddOns. Aber sehr löbliches Vorhaben :)
Danke für das Überlassen deiner XML-Liste.
Aus irgendeinem Grund wandelt dein FHEM bei der Erstellung die doppelten Anführungszeichen nicht in """ um.
Wahrscheinlicher:
Irgendwo werden die """ wieder zurückgewandelt.
Das einzige, das ich bisher dazu gefunden habe:
https://groups.google.com/forum/#!topic/fhem-users/Qq-cNEwugZs (https://groups.google.com/forum/#!topic/fhem-users/Qq-cNEwugZs)
Hier lag es am telnet-Client.
Aber der XBMC-telnet-Client kann es ja nicht sein...
Benutzt du
andFHEM? Das bedient sich ja auch der XML-Liste.
Im Moment fällt mir nichts weiter ein. :-\.Nicht 'mal, wie ich das reproduzieren könnte.
Bei dir:
<ATTR key="nameStyle" value="style="color:yellow;font-weight:bold""/>
So sollte es aussehen(und tut es auch bei mir):
<ATTR key="nameStyle" value=""style="color:yellow;font-weight:bold"""/>
Gruß
Hans
Da ich mein FHEM auf einer Fritte installiert habe: kann es sein das es an UTF-8 liegt?
Nein, ich benutze nicht andFHEM. Schaue ich mir aber mal an.
Nö, kann eigentlich nicht an der FritzBox liegen (werde FHEM zur Verifizierung aber nicht auf meiner installieren). Ich glaube, das wäre schon häufiger aufgefallen.
Gruß
Hans
Werde mal die namestyles " durch ' ersetzen. Vielleicht bringt das etwas.
So gemacht, allerdings tauchen dann weitere Fehler auf. Scheinbar wird das Escapen der Zeichen nicht richtig durchgeführt.
zu andFHEM: Hm ich habe nur Apple, aber FhemMobile funktioniert ohne Probleme (sofern das auch die xmllst benutzt!?).
So ich habe ein falsch codiertes UTF8 Zeichen gefunden!
Für das Protokoll, die XML Liste kann man wie folgt erzeugen.
http://192.168.1.1:8083/fhem/?cmd=xmllist&XHR=1
So mal eben testen ob es nun klappt!
UPDATE Klappt immer noch nicht, aber nun ein neuer Fehler!
20:03:48 T:2695383872 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.IndexError'>
Error Contents: list index out of range
Traceback (most recent call last):
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/fhemmain.py", line 48, in <module>
fetchFhem()
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/fhemmain.py", line 41, in fetchFhem
ret = fhem_fetch(hostip, hostport, telnetpasswd)
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 65, in fhem_fetch
ret = fhem_parseXML(xmlstr)
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 106, in fhem_parseXML
parse_devices(xmlstr)
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 142, in parse_devices
create_table(nr)
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 155, in create_table
window = MyAddon('FHEM Info: ' + dummy_list[nr].table_def[0])
File "/home/murdoc/.xbmc/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 163, in __init__
self.setGeometry(1280, 720 ,16, len(table[0])+1)
IndexError: list index out of range
-->End of Python script error report<--
HilflosguckindieRunde 8)
Nachtrag:
Es war noch ein Komma anstatt ein Pipe Zeichen im Dummy. Ich habe mittlerweile auch einen Schirm mit Daten gesehen, allerdings fehlten die Werte.
Hier mal mein Dummy:
define xbmc_dummy dummy
attr xbmc_dummy room _System
attr xbmc_dummy xbmcInfo HeatingThermostat desiredTemperature|temperature|battery
Was ist daran falsch?
UPDATE
Das Problem sitzt ja immer vor dem Bildschirm und wer lesen kann ist klar im Vorteil :-)
Hier nun ein funktionierender Dummy:
define xbmc_dummy dummy
attr xbmc_dummy room _System
attr xbmc_dummy xbmcInfo FS20 state| Status name|Name
Allerdings stellt sich mir beim TYPE die Frage, was der Unterschied zum kleinen "type" ist? Kann mir das jemand mal erklären?
Wenn ich als Dummy z.B. MAX als Type angebe, bekomme ich sowohl meine Fensterkontakte und auch die Thermostate. Wie kann ich eine Sub-Gruppe auswählen (Regex wie .* funktionieren leider nicht!)?
PS: Ich habe den Wiki Artikel aktualisiert! http://www.fhemwiki.de/wiki/XBMC#Anzeigen_von_Fhem_Daten_im_XBMC
Hallo,
Nee, Regex funktionieren nicht. War mehr so Proof of Concept (ich kann kein Python). Hatte es seit Wochen nicht mehr angeschaut.
Habe es gerade auf "jsonlist" umgestellt, in der Hoffnung, es übersichtlicher parsen zu können. Mal schauen...
Gruß
Hans
Leider gehen meine Phyton Kenntnisse auch gegen null, allerdings wollte ich mir das immer schon mal anschauen (wenn nur die liebe Zeit nicht wäre :() Wenn ich helfen kann, sag' Bescheid!
Zitat von: Zwiebel am 23 August 2013, 18:55:42
Hallo,
ich hab ein XBMC Modul geschrieben mit dem man FHEM steuern kann. (ein modul für XBMC nicht für FHEM)
Hintergrund ist der: Mein NAS läuft nicht dauernt. Kann aber und via FHEM angeschaltet werden. Relais board an der Fritzbox(FHEM).
Jetzt war es immer notwendig per Smartphone oder PC das NAS auf "on" zu schalten.
Das geht jetzt gleich aus dem XBMC raus.
Mal schauen wie das mit dem add-on funktioniert. Vielleicht bekomm ich noch mehr implementiert..
gruß
Zwiebel
Gibt es davon eine neue Version ?
in den Bildern in der WIKI wird beim Konfigurieren nach einem Telnet pwd gefragt, bei dieser Version nicht.
Hallo Sirus,
leider nein! Ich komm nicht so dahinter wie man gut ein XBMC Modul entwickelt, ohne XBMC neu zu starten bei einer Änderung. Wobei ich eh nur eine Funktion benötige im Wohnzimmer...(set NAS an).
Aber ich würde mich freuen wenn sich jemand findet der daran weiter macht.
viele Grüße
Zwiebel
Gibt es zu dem Thema eigentlich mittlerweile was neues?
Habe das gleiche Problem:
15:48:17 T:4746289152 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.ValueError'>
Error Contents: Extra data: line 385 column 1 - line 386 column 1 (char 49249 - 49256)
Traceback (most recent call last):
File "/Users/C0mmanda/Library/Application Support/Kodi/addons/script.xbmc.fheminfo/fhemmain.py", line 51, in <module>
fetchFhem()
File "/Users/C0mmanda/Library/Application Support/Kodi/addons/script.xbmc.fheminfo/fhemmain.py", line 44, in fetchFhem
ret = fhem_fetch(hostip, hostport, telnetpasswd)
File "/Users/C0mmanda/Library/Application Support/Kodi/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 70, in fhem_fetch
ret = fhem_parseXML(ip, port, telnetpasswd, xmlstr)
File "/Users/C0mmanda/Library/Application Support/Kodi/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 97, in fhem_parseXML
jl = json.loads(xmlstr)
File "/Users/Shared/jenkins/workspace/OSX-64/tools/depends/xbmc-depends/macosx10.8_x86_64-target/lib/python2.6/json/__init__.py", line 307, in loads
File "/Users/Shared/jenkins/workspace/OSX-64/tools/depends/xbmc-depends/macosx10.8_x86_64-target/lib/python2.6/json/decoder.py", line 322, in decode
ValueError: Extra data: line 385 column 1 - line 386 column 1 (char 49249 - 49256)
-->End of Python script error report<--
Und finde keine Lösung.....
Hallo,
Liegt vermutlich an der restriktiveren json-Behandlung von Kodi. Ich hatte bislang noch xbmc. Mit folgender Änderung geht es bei mir auch in Kodi.
Suche in ~/.kodi/addons/script.xbmc.fheminfo/lib/fhem.py die zeile:
ret = tn.read_all()
und füge danach die Zeile
ret = ret.replace("Bye...","")
ein.
Gruß
Hans
Ich denke du meintest ~/.kodi/addons/script.xbmc.fheminfo/resources/lib/fhem.py ;)
Habe die Zeile eingefügt, aber leider hilft es nicht... :(
18:24:10 T:139928147060480 NOTICE: fhem: telnet exception.
18:24:10 T:139928147060480 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.ValueError'>
Error Contents: No JSON object could be decoded
Traceback (most recent call last):
File "/storage/.kodi/addons/script.xbmc.fheminfo/fhemmain.py", line 51, in <module>
fetchFhem()
File "/storage/.kodi/addons/script.xbmc.fheminfo/fhemmain.py", line 44, in fetchFhem
ret = fhem_fetch(hostip, hostport, telnetpasswd)
File "/storage/.kodi/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 70, in fhem_fetch
ret = fhem_parseXML(ip, port, telnetpasswd, xmlstr)
File "/storage/.kodi/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 113, in fhem_parseXML
parse_devices(ip, port, telnetpasswd)
File "/storage/.kodi/addons/script.xbmc.fheminfo/resources/lib/fhem.py", line 131, in parse_devices
jl = json.loads(xmlstr)
File "/home/stephan/projects/openelec-5.0/build.OpenELEC-Generic.x86_64-5.0.8/Python-2.7.3/.install_pkg/usr/lib/python2.7/json/__init__.py", line 326, in loads
File "/home/stephan/projects/openelec-5.0/build.OpenELEC-Generic.x86_64-5.0.8/Python-2.7.3/.install_pkg/usr/lib/python2.7/json/decoder.py", line 366, in decode
File "/home/stephan/projects/openelec-5.0/build.OpenELEC-Generic.x86_64-5.0.8/Python-2.7.3/.install_pkg/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
ValueError: No JSON object could be decoded
-->End of Python script error report<--
Hallo,
Hast du denn in deinem dummy-Device im xbmcInfo-Attribut ein gültiges Device mit passendem Reading definiert?
Gruß
Hans
Zitat von: Hans Franz am 23 September 2015, 22:50:36
Hallo,
Hast du denn in deinem dummy-Device im xbmcInfo-Attribut ein gültiges Device mit passendem Reading definiert?
Gruß
Hans
Ich behaupte mal: Ja ;)
Per Definition muss das Dummy-Device wie folgt eingebunden werden:
attr <dummy-name> xbmcInfo <TYPE> <Reading[|Alias]> <[Reading[|Alias]]>...Ich habe angefangen mit meinen Temp-Sensoren. Die haben den "TYPE" "LaCrosse".
Internals:
CHANGED
DEF 1F
IODev myJeeLink
LASTInputDev myJeeLink
LaCrosse_lastRcv 2015-09-25 09:41:25
MSGCNT 19
NAME WZ_Temp
NR 138
STATE T: 19.1 H: 64 D: 12.1
TYPE LaCrosse
addr 1F
battery_new 0
corr1 0
corr2 0
myJeeLink_MSGCNT 19
myJeeLink_RAWMSG OK 9 31 1 4 167 64
myJeeLink_TIME 2015-09-25 09:41:25
previousH 64
previousT 19.1
sensorType 0=T(H)
Eingebunden wie folgt:
define KODI_dummy dummy
attr KODI_dummy xbmcInfo LaCrosse temperature|Temperatur humidity|Luftfeuchte
Gruß
Mmh,
Sieht gut aus.
Magst du mal die Ausgabe von
jsonlist2 TYPE=LaCrosse
hier anhängen?
Gruß
Hans
Zitat von: Hans Franz am 25 September 2015, 10:38:40
Mmh,
Sieht gut aus.
Magst du mal die Ausgabe von
jsonlist2 TYPE=LaCrosse
hier anhängen?
Gruß
Hans
Gerne!
{
"Arg":"TYPE=LaCrosse",
"Results": [
{
"Name":"AKZ_Temp",
"PossibleSets":"replaceBatteryForSec",
"PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev ignore:1,0 doAverage:1,0 doDewpoint:1,0 filterThreshold resolution event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat 1 DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride xbmcInfo userattr",
"Internals": {
"CFGFN": "/opt/fhem/FHEM/Ankleidezimmer.cfg",
"DEF": "30",
"LASTInputDev": "myJeeLink",
"LaCrosse_lastRcv": "2015-09-25 11:48:50",
"MSGCNT": "549",
"NAME": "AKZ_Temp",
"NR": "587",
"STATE": "T: 19 H: 66",
"TYPE": "LaCrosse",
"addr": "30",
"battery_new": "0",
"corr1": "0",
"corr2": "0",
"myJeeLink_MSGCNT": "549",
"myJeeLink_RAWMSG": "OK 9 48 1 4 166 66",
"myJeeLink_TIME": "2015-09-25 11:48:50",
"previousH": "66",
"previousT": "19",
"sensorType": "0=T(H)"
},
"Readings": {
"battery": { "Value":"ok", "Time":"2015-09-25 11:48:50" },
"dewpoint": { "Value":"12.5", "Time":"2015-09-25 11:48:50" },
"humidity": { "Value":"66", "Time":"2015-09-25 11:48:50" },
"state": { "Value":"T: 19 H: 66", "Time":"2015-09-25 11:41:46" },
"temperature": { "Value":"19", "Time":"2015-09-25 11:48:50" }
},
"Attributes": {
"IODev": "myJeeLink",
"alias": "Ankleidezimmer Temperatur",
"event-min-interval": "humidity:600,battery:1200,temperature:600,dewpoint:600",
"event-on-change-reading": "temperature:0.2,humidity:2,dewpoint:0.2,battery",
"room": "LaCrosse"
}
},
{
"Name":"GZ_Temp",
"PossibleSets":"replaceBatteryForSec",
"PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev ignore:1,0 doAverage:1,0 doDewpoint:1,0 filterThreshold resolution event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat 1 DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride xbmcInfo userattr",
"Internals": {
"CFGFN": "/opt/fhem/FHEM/Gaestezimmer.cfg",
"CHANGED": "null",
"DEF": "25",
"LASTInputDev": "myJeeLink",
"LaCrosse_lastRcv": "2015-09-25 11:48:41",
"MSGCNT": "511",
"NAME": "GZ_Temp",
"NR": "653",
"STATE": "T: 18.9 H: 65",
"TYPE": "LaCrosse",
"addr": "25",
"battery_new": "0",
"corr1": "0",
"corr2": "0",
"myJeeLink_MSGCNT": "511",
"myJeeLink_RAWMSG": "OK 9 37 1 4 165 65",
"myJeeLink_TIME": "2015-09-25 11:48:41",
"previousH": "65",
"previousT": "18.9",
"sensorType": "0=T(H)"
},
"Readings": {
"battery": { "Value":"ok", "Time":"2015-09-25 11:48:41" },
"dewpoint": { "Value":"12.2", "Time":"2015-09-25 11:46:41" },
"humidity": { "Value":"65", "Time":"2015-09-25 11:48:41" },
"state": { "Value":"T: 18.9 H: 65", "Time":"2015-09-25 10:33:29" },
"temperature": { "Value":"18.9", "Time":"2015-09-25 11:48:41" }
},
"Attributes": {
"IODev": "myJeeLink",
"alias": "Gästezimmer Temperatur",
"event-min-interval": "humidity:600,battery:1200,temperature:600,dewpoint:600",
"event-on-change-reading": "temperature:0.2,humidity:2,dewpoint:0.2,battery",
"room": "LaCrosse"
}
},
{
"Name":"KUE_Kuehlschrank",
"PossibleSets":"replaceBatteryForSec",
"PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev ignore:1,0 doAverage:1,0 doDewpoint:1,0 filterThreshold resolution event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat 1 DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride xbmcInfo userattr",
"Internals": {
"DEF": "1A",
"LASTInputDev": "myJeeLink",
"LaCrosse_lastRcv": "2015-09-25 11:48:03",
"MSGCNT": "26",
"NAME": "KUE_Kuehlschrank",
"NR": "134",
"STATE": "T: 5.2",
"TYPE": "LaCrosse",
"addr": "1A",
"battery_new": "0",
"corr1": "0",
"corr2": "0",
"myJeeLink_MSGCNT": "26",
"myJeeLink_RAWMSG": "OK 9 26 1 4 28 106",
"myJeeLink_TIME": "2015-09-25 11:48:03",
"previousH": "106",
"previousT": "5.2",
"sensorType": "0=T(H)"
},
"Readings": {
"H": { "Value":"0", "Time":"2015-09-03 19:21:02" },
"battery": { "Value":"ok", "Time":"2015-09-25 11:48:03" },
"dewpoint": { "Value":"4.7", "Time":"2015-09-19 11:07:32" },
"humidity": { "Value":"98", "Time":"2015-09-19 11:07:32" },
"state": { "Value":"T: 5.2", "Time":"2015-09-25 11:48:03" },
"temperature": { "Value":"5.2", "Time":"2015-09-25 11:48:03" }
},
"Attributes": {
"IODev": "myJeeLink",
"alias": "Kühlschrank Temperatur",
"event-min-interval": "battery:1200,temperature:600",
"event-on-change-reading": "temperature:0.2,battery",
"icon": "temp_frost",
"room": "Home,Kueche,LaCrosse",
"sortby": "9"
}
},
{
"Name":"KUE_Temp",
"PossibleSets":"replaceBatteryForSec",
"PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev ignore:1,0 doAverage:1,0 doDewpoint:1,0 filterThreshold resolution event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat 1 DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride xbmcInfo userattr",
"Internals": {
"CFGFN": "/opt/fhem/FHEM/Kueche.cfg",
"CHANGED": "null",
"DEF": "38",
"LASTInputDev": "myJeeLink",
"LaCrosse_lastRcv": "2015-09-25 11:48:51",
"MSGCNT": "479",
"NAME": "KUE_Temp",
"NR": "551",
"STATE": "T: 19.5 H: 61 D: 11.8",
"TYPE": "LaCrosse",
"addr": "38",
"battery_new": "0",
"corr1": "0",
"corr2": "0",
"myJeeLink_MSGCNT": "479",
"myJeeLink_RAWMSG": "OK 9 56 1 4 171 61",
"myJeeLink_TIME": "2015-09-25 11:48:51",
"previousH": "61",
"previousT": "19.5",
"sensorType": "0=T(H)"
},
"Readings": {
"battery": { "Value":"ok", "Time":"2015-09-25 11:48:51" },
"dewpoint": { "Value":"11.8", "Time":"2015-09-25 11:48:51" },
"humidity": { "Value":"61", "Time":"2015-09-25 11:48:51" },
"state": { "Value":"T: 19.5 H: 61 D: 11.8", "Time":"2015-09-25 11:48:37" },
"temperature": { "Value":"19.5", "Time":"2015-09-25 11:48:51" }
},
"Attributes": {
"IODev": "myJeeLink",
"alias": "Küche Temperatur",
"doDewpoint": "1",
"event-min-interval": "humidity:600,battery:1200,temperature:600,dewpoint:600",
"event-on-change-reading": "temperature:0.2,humidity:2,dewpoint:0.2,battery",
"icon": "temp_temperature",
"room": "Home,Kueche,LaCrosse",
"sortby": "2"
}
},
{
"Name":"SZ_Temp",
"PossibleSets":"replaceBatteryForSec",
"PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev ignore:1,0 doAverage:1,0 doDewpoint:1,0 filterThreshold resolution event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat 1 DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride xbmcInfo userattr",
"Internals": {
"CFGFN": "/opt/fhem/FHEM/Schlafzimmer.cfg",
"CHANGED": "null",
"DEF": "10",
"LASTInputDev": "myJeeLink",
"LaCrosse_lastRcv": "2015-09-25 11:48:49",
"MSGCNT": "541",
"NAME": "SZ_Temp",
"NR": "614",
"STATE": "T: 19.6 H: 61",
"TYPE": "LaCrosse",
"addr": "10",
"battery_new": "0",
"corr1": "0",
"corr2": "0",
"myJeeLink_MSGCNT": "541",
"myJeeLink_RAWMSG": "OK 9 16 1 4 172 61",
"myJeeLink_TIME": "2015-09-25 11:48:49",
"previousH": "61",
"previousT": "19.6",
"sensorType": "0=T(H)"
},
"Readings": {
"battery": { "Value":"ok", "Time":"2015-09-25 11:48:49" },
"dewpoint": { "Value":"11.9", "Time":"2015-09-25 11:45:31" },
"humidity": { "Value":"61", "Time":"2015-09-25 11:48:49" },
"state": { "Value":"T: 19.6 H: 61", "Time":"2015-09-25 11:40:51" },
"temperature": { "Value":"19.6", "Time":"2015-09-25 11:48:49" }
},
"Attributes": {
"IODev": "myJeeLink",
"alias": "Schlafzimmer Temperatur",
"event-min-interval": "humidity:600,battery:1200,temperature:600,dewpoint:600",
"event-on-change-reading": "temperature:0.2,humidity:2,dewpoint:0.2,battery",
"room": "LaCrosse"
}
},
{
"Name":"TK_Temp",
"PossibleSets":"replaceBatteryForSec",
"PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev ignore:1,0 doAverage:1,0 doDewpoint:1,0 filterThreshold resolution event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat 1 DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride xbmcInfo userattr",
"Internals": {
"CHANGED": "null",
"DEF": "27",
"LASTInputDev": "myJeeLink",
"LaCrosse_lastRcv": "2015-09-25 11:48:47",
"MSGCNT": "414",
"NAME": "TK_Temp",
"NR": "130",
"STATE": "T: -19.5",
"TYPE": "LaCrosse",
"addr": "27",
"battery_new": "0",
"corr1": "0",
"corr2": "0",
"myJeeLink_MSGCNT": "414",
"myJeeLink_RAWMSG": "OK 9 39 1 3 36 106",
"myJeeLink_TIME": "2015-09-25 11:48:47",
"previousH": "106",
"previousT": "-19.5",
"sensorType": "0=T(H)"
},
"Readings": {
"H": { "Value":"0", "Time":"2015-09-03 18:05:07" },
"battery": { "Value":"ok", "Time":"2015-09-25 11:48:47" },
"dewpoint": { "Value":"12.3", "Time":"2015-09-21 18:48:40" },
"humidity": { "Value":"56", "Time":"2015-09-21 18:57:12" },
"state": { "Value":"T: -19.5", "Time":"2015-09-25 11:46:30" },
"temperature": { "Value":"-19.5", "Time":"2015-09-25 11:48:47" }
},
"Attributes": {
"IODev": "myJeeLink",
"alias": "Tiefkühltruhe Temperatur",
"event-min-interval": "battery:1200,temperature:600",
"event-on-change-reading": "temperature:0.2,humidity:2,battery",
"icon": "temp_frost",
"room": "Home,Keller,LaCrosse",
"sortby": "20"
}
},
{
"Name":"WZ_Temp",
"PossibleSets":"replaceBatteryForSec",
"PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev ignore:1,0 doAverage:1,0 doDewpoint:1,0 filterThreshold resolution event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat 1 DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fm_type icon sortby webCmd widgetOverride xbmcInfo userattr",
"Internals": {
"CHANGED": "null",
"DEF": "1F",
"LASTInputDev": "myJeeLink",
"LaCrosse_lastRcv": "2015-09-25 11:48:49",
"MSGCNT": "544",
"NAME": "WZ_Temp",
"NR": "138",
"STATE": "T: 18.8 H: 63 D: 11.6",
"TYPE": "LaCrosse",
"addr": "1F",
"battery_new": "0",
"corr1": "0",
"corr2": "0",
"myJeeLink_MSGCNT": "544",
"myJeeLink_RAWMSG": "OK 9 31 1 4 164 63",
"myJeeLink_TIME": "2015-09-25 11:48:49",
"previousH": "63",
"previousT": "18.8",
"sensorType": "0=T(H)"
},
"Readings": {
"battery": { "Value":"ok", "Time":"2015-09-25 11:48:49" },
"dewpoint": { "Value":"11.6", "Time":"2015-09-25 11:48:49" },
"humidity": { "Value":"63", "Time":"2015-09-25 11:48:49" },
"state": { "Value":"T: 18.8 H: 63 D: 11.6", "Time":"2015-09-25 11:47:28" },
"temperature": { "Value":"18.8", "Time":"2015-09-25 11:48:49" }
},
"Attributes": {
"IODev": "myJeeLink",
"alias": "Wohnzimmer Temperatur",
"doDewpoint": "1",
"event-min-interval": "humidity:600,battery:1200,temperature:600,dewpoint:600",
"event-on-change-reading": "temperature:0.2,humidity:2,dewpoint:0.2,battery",
"icon": "temp_temperature",
"room": "Home,LaCrosse,Wohnzimmer",
"sortby": "1"
}
} ],
"totalResultsReturned":7
}
Sind dann natürlich alle LaCrosse-Devices drin, 5 an der Zahl!
grtz CmdA
Hallo,
Es liegt an den Umlauten in deinen Alias. Ich hoffte die passende UTF8-Kodierung d'rin zu haben :-X
Füge 'mal in die genannte Datei oben unter den import-Zeilen folgendes ein:
reload(sys)
sys.setdefaultencoding('utf8')
Gruß
Hans
Oh mann, es funktioniert :D :D
1000 Dank!
grtz
CmdA
Hallo zusammen,
ich habe hier mal ein ganz anderes Problem. Ich bekomme das Addon (von Hans Franz) zwar installiert, jedoch nicht gestartet. Ich bekomme bei Kodi die Fehlermeldung "get jsonlist from 127.0.0.1 / Fehler beim Verbinden zu Fhem".
Muss ich vorher noch was beachten bzw. ist es normal, dass er versucht den Localhost anzusprechen? Kodi und Fhem laufen bei mir auf unterschiedlichen Pi's.
Danke für die Hilfe.
Hallo,
Du kannst die IP im Konfigurationsdialog eingeben.
Aber ich bekomme das Teil bei mir selber nicht mehr zum Laufen :'(
Gruß
Hans
Edit:
Läuft wieder.
Zitat von: Hans Franz am 16 Januar 2016, 23:18:20
Du kannst die IP im Konfigurationsdialog eingeben.
Jup, jedoch wird mir dieser Dialog erst gar nicht angezeigt, sondern die genannte Fehlermeldung in einem kleinen Popup unten rechts auf dem Monitor.
Nutzt du OMSC oder OpenELEC? Vielleicht macht das noch einen Unterschied?
Gruß
Hallo,
OPENELEC und distributionsspezifisch. Sollte aber egal sein.
Du startest offensichtlich das Script sofort. Die Konfiguration muss aber vorher erfolgen.
Bei mir:
Einstellungen=>Addons=>Benutzer-Addons=>Programm-Addons=>FHEM-Info->Konfigurieren
Gruß
Hans
Hallo,
was müsste man machen wenn die Anzeige der Geräte in der 1. Spalte bei Kodi mehr Platz benötigt. Je mehr Werte dargestellt werden um so weniger Platz wird zur Verfügung gestellt. Meine Heizungszentralen haben Kennungen in der Art:
FHT_Wohnzimmer
FHT_Schlafzimmer
bei fünf anzuzeigenden Werten ist leider nur noch Platz für:
FHT_Wohnzim..
FHT_Schlafzi..
Nach rechts ist im TV jedoch noch ordentlich Platz.
Gibts da ne simple Lösung?
Im Voraus vielen Dank.