Hallo,
meine Logfile sieht aus wie ein Schlachtfeld und ich brauche da leider Hilfe. Ich komme nicht alleine drauf.
Zum einen muss ich noch einen Haufen KNX Geräte anlegen. Das werde ich sehr wahrscheinlich alleine hinbekommen.
Aber alle paar Sekunden steht in meiner Logfile folgendes:
2016.12.06 00:06:33 1: PERL WARNING: Argument "0.20 °C" isn't numeric in sprintf at (eval 310631) line 1.
2016.12.06 00:06:33 3: eval: {sprintf('%.1f', ReadingsVal('wetterstation_temp','getG1',0));}
Bei meinem passenden Device wetterstation_temp steht im attr userReadings folgendes:
userReadings temperaturegerundet {sprintf('%.1f', ReadingsVal('wetterstation_temp','getG1',0));}
Kann mir jemand sagen, was ich tun muss, damit die Fehlermeldung im LOG verschwindet. Die taucht wie gesagt alle paar Sekunden auf.
Grüße,
Visionsurfer
Nutze ReadingsNum statt ReadingsVal
Du musst dich wirklich langsam mal mit den Grundlagen beschäftigen. Das geht doch viel schneller, als dich ständig nur durchzufragen. Selbst die Suche bemühen würde schneller gehen.
@marvin78
Danke für die schnelle Antwort.
Das würde ich grundsätzlich sehr gerne machen. Ich hab mir auch die Einsteiger PDF usw. komplett durchgelesen. Auch versuche ich vorher das Forum zu benutzen.
Vielleicht stelle ich mich zu dumm an, aber wirklich eindeutig und verständlich hab ich das noch an keiner Stelle gefunden.
Das WIKI ist riesig und Commandref auch. Hin und wieder würde ich mir ein paar mehr Praxisbeispiele wünschen.
Als Beispiel:
Ich versuche mich mit readingsProxy zu beschäftigen. Weil ich halt gerne lightscenen später mit Alexa steuern will.
Dazu gibt es die Commandref und das hier: http://www.fhemwiki.de/wiki/Harmony#Button_f.C3.BCr_eine_bestimmte_Activity_im_Frontend_und_Homekit_.C3.BCber_readingsProxy
Ich muss aber gestehen, ich verstehe es trotzdem nicht wirklich. Im Forum hab ich auch noch nicht den Durchbruch gefunden.
OK. Ist zwar jetzt ein bisschen Offtopic, aber so ist es :)
Grüße,
Visionsurfer
Zitat von: visionsurfer am 06 Dezember 2016, 10:52:06
Das WIKI ist riesig und Commandref auch. Hin und wieder würde ich mir ein paar mehr Praxisbeispiele wünschen.
Meine Gedanken dazu:
1. Du hast eine Fehlermeldung, die Du nicht verstehst.
2. Du hast den Befehl gefunden, der den Fehler produziert (das attr userReadings). Das ist schon mal nicht übel.
3. Damit brauchst Du nicht mehr die unendlichen Weiten zu durchsuchen, sondern kannst es stark eingrenzen: Es hat was mit perl zu tun ("{...}")und mit dem ReadingsVal.
Warum gehts Du dann nicht her und kuckst genau unter diesen zwei Gesichtspunkten in der commandref nach, was da steht? (Dort steht nämlich in der Tat wirklich fast alles, was man zur Fehlersuche so braucht, für's Konfigurieren ist das nicht immer so). Dann hättest Du den Abschnitt über ReadingsNum selbst gefunden (steht nämlich bei den perl-Specials direkt hinter ReadingsVal mit dem Hinweis, dass es für Berechnungszwecke besser geeignet ist als ReadingsVal).
Und zu dem readingsProxy: Wenn Du die Grundlagen nicht verstanden hast, wirst Du mit den komplexen Dingen scheitern, weil alle Beispiele eben auf die doch irgendwie an die spezifischen Erfordernisse der jeweiligen Hardware-Situation angepasst werden müssen. Dazu muß man halt hin und wieder sehen, was der Event-Monitor ausspuckt usw... Da hättest Du gleich nach dem Anlegen des Devices eigentlich sehen können, dass etwas nicht so ist wie erwartet, und hättest nicht erst das Logfile riesig werden lassen brauchen 8).
Gegen diese Themen helfen mehr Praxisbeispiele wenig bis gar nichts.
Vielleicht noch was aus eigener Erfahrung: Ich habe die commandref oder das Forum natürlich auch nie ganz gelesen (warum auch?), wenn man aber regelmäßig mitliest, die Suche einigermaßen clever einsetzt (auch die Suche in der commandref - Browsersuche), die Grundlagen kennt (auch die Mittel, die man zur Analyse zur Verfügung hat), dann kann man in 95% aller Fälle die Antwort in unter einer Minute finden. Ich muss es wissen, so habe ich die Anfänge gestaltet. Fragen habe ich nur sehr sehr wenige gestellt. Auch die Lernkurve ist steiler.
Sollte man mal etwas nicht finden, was durchaus auch sehr oft vorkommt, hilft es, die Frage so vorzubereiten, dass man dem Helfer alle möglichen Daten zur Verfügung stellt. Um das zu können, muss man die Grundlagen kennen. Die Grundlagen sind das wichtigste. Oft heißt das nur, wissen, wie man suchen muss.
Hi,
ja ich geb euch schon grundsätzlich recht.
Meine zweite Fehlermeldung im LOG hab ich nach der von euch vorgeschlagenen Vorgehensweise auch gerade selbstständig lösen können :)
Nun noch meine ganzen KNX Devices anlegen und dann müsste das Log ziemlich leer sein.
Und um das readingsProxy muss ich mich noch mal in Ruhe kümmern. Wobei hier auch wieder das Thema ist: Viele Wege führen nach Rom. Ich könnte es sicherlich auch mit einem dummy Device oder ähnlichem lösen. Ich hab auch aber den Ehrgeiz es mit dem readingsProxy hinzubekommen.
Grüße,
Visionsurfer
Zitat von: visionsurfer am 06 Dezember 2016, 12:51:22
Ich hab auch aber den Ehrgeiz es mit dem readingsProxy hinzubekommen.
M.E. hat das mit readingsProxy vs. andere Wege (Dummy?) weniger mit Ehrgeiz zu tun, als vielmehr mit der Frage, was für den jeweiligen Zweck die sinnvolle Variante ist.
Daher wäre insoweit mein Rat: erst mal versuchen zu verstehen, was es mit den jeweiligen kleinen Bausteinen auf sich hat und wo die Unterschiede (=Stärken und Schwächen) liegen und warum der Ersteller der Beispiele gerade diesen Weg genommen hat.
In dem zitierten Beispiel hat (nach meinem sehr begrenzten Verständnis, ich habe weder eine Harmony noch TabletUI noch kenne ich Alexa, bitte also nicht verbessern, bringt niemandem was ::)) jemand den readingsProx benutzt, weil er ein steuerbares Element in FHEMWEB haben wollte und das dann in TabletUI eingebinden. Wenn Du die einzelnen Kanäle der Harmony sowieso nur sprachgesteuert (Alexa?) ohne Web-Techniken ansteuern willst, kannst Du Dir das evtl. auch sparen. Wenn Du was Fernbedienungsmäßiges als UI suchst, könnte vielleicht auch remotecontrol interessant sein.
Die Festlegung auf den einen Weg erscheint mir jedenfalls früh, "nur" weil es jemand (aus gutem Grund!) mal in ein Beispiel eingebaut hat.
Viel Spaß weiterhin!
Hi,
ja stimmt schon. Muss ich mir dann wohl noch mal anschauen.
Bei dem readingsProxy geht es bei mir um den ähnlichen Ansatz. Ich möchte auch ein steuerbares Element in FHEMWEB haben, welches ich dann einfach per Sprache mit Hilfe von Alexa steuern kann. Ich möchte also also eine einzelne Szene aus dem lightscene Modul als steuerbares Element haben um es dann mit Alexa via "Alexa, schalte Kochen an" starten zu können.
So wurde es mir empfohlen und dann verfolge ich natürlich auch den Weg :)
Aber wie du schon richtig sagst, die Unterschiede sollten bekannt sein. Das muss ich mir noch mal genau anschauen, um zu entscheiden was der richtige Weg ist.
Grüße,
Visionsurfer
ist hier jetzt wirklich off-topic:
Warum braucht es ein FHEMWEB-Element, um einen Sprachbefehl auszuführen?
Erzeugt nicht Alexa ein Event, wenn ein bestimmter Befehl gesprochen wird? Dann ist es nach meinem Verständnis für die Funktionalität nicht erforderlich, einen Zwischenschritt in FHEMWEB anzulegen, sondern man greift das Event mit einem notify und setzt den entsprechenden Befehl ab (also so in die Richtung "define notify nKochen <alexa-Event> set LichtsceneKochen <scene_name>"), fertig ist die Kiste.
Zur Visualisierung wird in der commandref ein weblink vorgeschlagen. Aber der, der Dir das mit dem readingsProxy empfohlen hatte, hat eventuell andere Rahmenbedingungen von Dir genannt erhalten und daher hat der Tip sicher auch seine Berechtigung ;).
Hi,
Alexa bzw. die FHEM Alexa Unterstützung reagiert auf Schlüsselwörter. Diese werden quasi als attr alias hinterlegt. So ist mein Device "schlafzimmer_haupt" zum Beispiel mit dem alias "Schlafzimmerlicht" per Sprache zu steuern: Alexa, schalte Schlafzimmerlicht an.
Im lightscene Modul hab ich mir z.B. in der Küche 3 Szenen angelegt: Kochen_vorbereiten, Kochen_Kochen und Kochen_Ende. Dort gibt es aber keine alias. Es ist also quasi nicht so ohne weiteres Möglich, dem ganzen einen eindeutigen Namen zuzuordnen, womit Alexa was anfangen kann. Also braucht man quasi ein virtuelles Devices.
Ich hoffe das ich alles richtig erklärt habe :)
Grüße,
Visionsurfer
Hallo alle,
ich hätt gerne auch noch ein Problem ;-)
Das mit Alexa ist alles schön und gut, irgendwann möchte ich das bestimmt auch mal.
Ich bin aber Anfänger und habe daher noch andere Problemchen vorher zu lösen:
Ich habe es gerade geschafft, mit event-on-update-reading und event-on-change-reading geschafft,
das nicht mehr sooo viele Einträge gemacht werden. Nun ist das Logfile aber schon vorher riesig geworden.
Gibt es eine Möglichkeit es mit einer Automatik nachträglich etwas "einzuschrumpfen" ?
Ich habe in einem Youtube-Tutorial ( Nr 9 ) etwas mit DB-Logging und reducelog gefunden.
Das funktioniert aber bei meinen einzelnen Logfiles nicht.
Kann mir da vlt jemand " auf die Sprünge" helfen ?
LG
Sandman
Zitat von: Sandmann am 10 Februar 2017, 12:34:41
Hallo alle,
ich hätt gerne auch noch ein Problem ;-)
Das mit Alexa ist alles schön und gut, irgendwann möchte ich das bestimmt auch mal.
Ich bin aber Anfänger und habe daher noch andere Problemchen vorher zu lösen:
Ich habe es gerade geschafft, mit event-on-update-reading und event-on-change-reading geschafft,
das nicht mehr sooo viele Einträge gemacht werden. Nun ist das Logfile aber schon vorher riesig geworden.
Gibt es eine Möglichkeit es mit einer Automatik nachträglich etwas "einzuschrumpfen" ?
Ich habe in einem Youtube-Tutorial ( Nr 9 ) etwas mit DB-Logging und reducelog gefunden.
Das funktioniert aber bei meinen einzelnen Logfiles nicht.
Kann mir da vlt jemand " auf die Sprünge" helfen ?
LG
Sandman
Es gibt keinen Grund ein LogFile zu verkleiner, Logs sind dafür da sachen zu Dokumentieren und falls Fehler auftreten es zu nutzen um den Fehler zu finden.
Somit is logging eine gute Sache und sollte aufjedenfall gemacht werden. Natürlich gibt es Module wie z.B. Sonos, wo es schlau is verbose auf 2 oder sogar 1 zu stellen, da du sonst einfach zu viele unnötige Log Einräge bekommst. Diese Module müllen dir in der Tat einfach nur das Log zu!
Vision Surfer hat diesen Thread eröffnet, da er Fehlermeldungen im Log hatte und nicht wusste wie er sie beseitigt (aufräumt).
Und DBLog verkleinert nichts sondern macht es kompakter und speichert es nur in eine einzige Datei. Das ist eine von vielen vorteilen.
PS: das oben genannte verbose grenz oder erweitert einfach nur die gesprächigkeit eines Moduls. Umso kleiner die Zahl 0-5 desto weniger teilt das Modul dir mit. Umso größer, desto mehr.
Hi,
redet ihr über das FHEM-Logfile oder ein FileLog? Das ist mir gerade nicht so klar.
Gruß,
Thorsten
Zitat von: Thorsten Pferdekaemper am 10 Februar 2017, 16:57:21
Hi,
redet ihr über das FHEM-Logfile oder ein FileLog? Das ist mir gerade nicht so klar.
Gruß,
Thorsten
also VisionSurfer schrieb über das Fhem LogFile, dachte es handelt sich bei Sandmann auch um das Fhem LogFile
Zitat von: Fixel2012 am 10 Februar 2017, 16:59:13
also VisionSurfer schrieb über das Fhem LogFile, dachte es handelt sich bei Sandmann auch um das Fhem LogFile
Das glaube ich nicht so ganz:
Zitat
Ich habe es gerade geschafft, mit event-on-update-reading und event-on-change-reading geschafft
...oder macht das auch was mit dem Logfile? Normalerweise ja nicht.
Jetzt mal die Antwort für FileLogs: Man sollte sich überlegen, ob man die Dinger überhaupt braucht. Oft warden die Teile durch autocreate angelegt und enthalten jeden Furz, den das Gerät von sich gibt. Wenn man nicht weiß, wozu man ein bestimmtes FileLog braucht, dann braucht man es wahrscheinlich nicht. Dann einfach löschen.
Man sollte sich dann überlegen, welche Events man tatsächlich loggen will und dan die RegEx vom FileLog entsprechend anpassen.
Für die Fälle, in denen es ein Reading gibt, das andere Readings in einer Zeile zusammenfasst (z.B. bei Homematic-Thermostaten ist das der Fall), dann ist die eine Zeile den einzelnen Readings vorzuziehen.
Jetzt stellt man noch den Dateinamen so ein, dass man nicht nur ein Logfile pro Jahr hat, sondern eins pro Tag und passt noch das Attribut nrarchive entsprechend an. Dann werden "alte" Files gelöscht.
Das Problem mit zu großen Dateien lost sich dann nach ein paar Tagen von ganz alleine.
Gruß,
Thorsten
In einem Device LogFile steht doch nicht soetwas? :o
2016.12.06 00:06:33 1: PERL WARNING: Argument "0.20 °C" isn't numeric in sprintf at (eval 310631) line 1.
2016.12.06 00:06:33 3: eval: {sprintf('%.1f', ReadingsVal('wetterstation_temp','getG1',0));}
Das schrieb Vision Surfer oben ???
Ja, aber sandmann nicht.
Deshalb meine ich ja, dass hier über unterschiedliche Dinge geredet wird.
Gruß,
Thorsten