Neues widget todoist

Begonnen von pula, 17 Januar 2018, 01:50:07

Vorheriges Thema - Nächstes Thema

pula

Hallo,

ich hab schon fast ein Jahr nichts mehr damit gemacht - und grade festgestellt, daß ich in meinem setup auch in fhem beim todoist-modul ein Problem habe:
Response was damaged or empty. See log for details.
Im Log:
HTTP/1.1 403 Forbidden

Ich muss mir zuerst ansehen, warum das Modul bei mir nicht mehr tut und dann kann ich mir das widget ansehen. Kann leider etwas dauern...

Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

pula

Das ging ja schneller als gedacht - neuen todoist-token eingespielt und schon gehts wieder.
Bei mir kommt allerdings dieser Fehler nicht im widget, sondern ein neuer Task wird hinzugefügt.
Wie hast Du das widget denn eingebunden? Bei mir ist das einfach so:
<div data-type="todoist" data-device="einkaufsliste" data-divider="#=" data-height="30px" data-listheight="100px">


Bei mir gibts allerdings im ganzen fhem-Verzeichnis kein file oder dir mit dem Namen "active" - daher ist mir nicht ganz klar, woher das kommen könnte.

Kannst Du mal in fhem/www/tablet gehen und dort den Befehl
grep -ir active *.html
absetzen (vorausgesetzt, Du bist unter Linux - unter Windows kenn ich mich leider nicht gut genug aus, um aus dem Gedächtnis einen entsprechenden Befehl zu sagen) und das Ergebnis hier posten?
Ich hab den Verdacht, daß der Fehler nicht im widget selber liegt...
Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

sprudelverduenner

Hi Pula,

eingebunden ist das Widget bei mir so:
<div data-type="todoist" data-device='einkaufszettel' data-height="30px" data-listheight="380px">


An dem Code habe ich auch nie etwas geändert. Seit 1 Jahr lief das ja auch so. Seit wann es nicht mehr geht kann ich allerdings nicht eingrenzen.
Gefühlt muss es irgendwann die letzten 2 Monate eine Änderung gegeben haben...

der GREP im Verzeichnis fhem/www/tablet bringt folgendes:
<tr><td><div data-type="symbol" data-icon="mi-airplanemode_active" title="mi-airplanemode_active" data-off-color="#f0f0f0"></div></td><td>mi-airplanemode_active</td><td>material-icons.min.css</td></tr>
icons_table.html:        <tr><td><div data-type="symbol" data-icon="mi-airplanemode_inactive" title="mi-airplanemode_inactive" data-off-color="#f0f0f0"></div></td><td>mi-airplanemode_inactive</td><td>material-icons.min.css</td></tr>
icons_table.html:        <tr><td><div data-type="symbol" data-icon="mi-notifications_active" title="mi-notifications_active" data-off-color="#f0f0f0"></div></td><td>mi-notifications_active</td><td>material-icons.min.css</td></tr>


Ich hoffe Du kannst etwas damit anfangen...
Danke vorab.
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

pula

#18
Sehr eigenartig. Irgendwo biegt Dein html/js ab und denkt scheinbar, es ist im fhem-pfad, anstatt im richtigen Pfad.
Nur wo? Das ist echt schwer zu diagnostizieren. Vielleicht findest Du im Browser im debug-mode mehr heraus? (Shift+Ctrl+I)

Wenn Du dort unmittelbar nach dem Fehler auf "Console" gehst und den Fehler suchst, müsste rechts stehen, von wo versucht wird, dieses File aufzurufen. Dann hätten wir das Problem....

Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

sprudelverduenner

Also ich sehe keinen Fehler in der Konsole:
Base dir: /fhem/tablet/
hier
<div class='tdtable;'><div style='height:380px; overflow: auto;'><div class="tdtr"><div data-type="label" class="tditem" style="margin: 10px 10px; height:30px;">ceranfeldreiniger</div><div class="tdcheckbox fa fa-check-square fa-2x" style="text-align: right;" onclick="ftui.setFhemStatus('set einkaufszettel completeTask 0'); ftui.toast('set einkaufszettel completeTask 0')"></div></div><div class="tdtr"><div data-type="label" class="tditem" style="margin: 10px 10px; height:30px;"> kartoffeln</div><div class="tdcheckbox fa fa-check-square fa-2x" style="text-align: right;" onclick="ftui.setFhemStatus('set einkaufszettel completeTask 1'); ftui.toast('set einkaufszettel completeTask 1')"></div></div></div><div class="tdtr"><div class="tditem notransmit" data-type="input" id="sendTask"></div><div data-type="link" class="tdsend" data-icon="fa-plus" data-device="einkaufszettel" data-set="addTask" data-value="#sendTask"></div></div></div></div>
sssstring
hier
<div class='tdtable;'><div style='height:380px; overflow: auto;'><div class="tdtr"><div data-type="label" class="tditem" style="margin: 10px 10px; height:30px;">ceranfeldreiniger</div><div class="tdcheckbox fa fa-check-square fa-2x" style="text-align: right;" onclick="ftui.setFhemStatus('set einkaufszettel completeTask 0'); ftui.toast('set einkaufszettel completeTask 0')"></div></div><div class="tdtr"><div data-type="label" class="tditem" style="margin: 10px 10px; height:30px;"> kartoffeln</div><div class="tdcheckbox fa fa-check-square fa-2x" style="text-align: right;" onclick="ftui.setFhemStatus('set einkaufszettel completeTask 1'); ftui.toast('set einkaufszettel completeTask 1')"></div></div></div><div class="tdtr"><div class="tditem notransmit" data-type="input" id="sendTask"></div><div data-type="link" class="tdsend" data-icon="fa-plus" data-device="einkaufszettel" data-set="addTask" data-value="#sendTask"></div></div></div></div>
HTML1300: Navigation wurde ausgeführt.


Das ist der Teil der nach Aufruf der TabletUI dort in der Konsole angezeigt wird.
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

pula

Da muss ich jetzt ehrlich sagen, dass ich ein wenig ratlos bin.
Ohne weiteren Input tu ich mich sehr schwer, Dir weiterzuhelfen und wenn der Browser den Fehler ausspuckt, aber nicht in der Konsole, dann weiss ich nicht so recht, wo ich ansetzen soll.
Weiss einer der Mitleser evtl Rat?
Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

thuranga

#21
Ich stehe auf dem Schlauch ... in FHEM klappt alles, da bekomme ich die Daten angezeigt, aber wenn ich das in Tablet UI integriere kommt:

ERROR
widget_todois.js:1
SyntaxError: Unexpected identifier

Müsste es nicht eine widget_todois.js in /opt/fhem/www/tablet/js geben? Auch nach einem Update ist die nicht da ...

Viele Grüße
brownlow

sprudelverduenner

td.zip aus dem ersten Beitrag laden und entpacken.
Dann das Widget manuell in das Verzeichnis kopieren und Fhem neu starten.
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

pula

#23
Bitte den ersten Thread beachten. Da steht wie man das installiert...
Cheers
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

thuranga

oh man ... ich bin so blind, sorry. Habe ich überlesen!  ::) :-\

Danke für die schnelle Hilfe! Jetzt geht es!

Typisches Layer-8-Problem  :-\

thuranga

#25
@sprudelverduenner: Hattest du das Problem mit dem

File not found: ./www/tablet/active

gelöst? Mein grep gibt das gleiche aus wie bei dir.


Laut dem Browser-Inspector ist der Initiator:

js/widget_link.js:27

das wäre:

document.location.href = target;

Das passt ja auch. Es erfolgt ja eine Weiterleitung

Aber wohin soll es gehen? Ich habe mal ein alert(target); eingebaut.

Dreimal dürft ihr raten was kommt ... "active"  ;)

Ok, passt. Die Weiterleitung works as designed. Wenn ich wüsste, wohin es wirklich gehen soll, kann ich ja was umbauen ... Aber das weiß ich nicht  :-[



pula

Hallo,
ein erster Hinweis!
Kannst Du evtl auch noch rausfinden, von wo im todoist-widget das aufgerufen wird?
Vielleicht kann ich dann helfen...
Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

sprudelverduenner

@brownlow, @pula
jaaaaaaaaaaaa........ genau das ist mein Problem.
Leider habe ich von dieser Materie nicht ganz so viel Kenn - ich weiß nicht wie ich euch mit Hinweisen füttern kann.
Ich könnte ne TeamViewer Session anbieten.

Oder eben nach Euren Anleitungen testen...
FHEM @ RaspberryPi 3, HMLAN, HMUART + HMRS485, Homematic, ESPEasy @ Sonoff / Shelly / ESP8266, ZigBee @ CC2531
Echo Dot, Dreambox, Yamaha MusicCast, Logitech Hub, LW-12, LD382
FRITZ!Box 7590 AX, Mesh @ FRITZ!Repeater 2400, FRITZ!Fon, iPhone 13, iPad Air 5, AppleWatch 8

thuranga

Interessant ist ja im HTML-Code die Stelle mir dem "+" fürs Eintragen, also:

<div class="tdtr"><div class="tditem notransmit" data-type="input" id="sendTask" data-ready=""><input class="textinput" type="text" style="visibility: visible;"></div><div data-type="link" class="tdsend link" data-icon="fa-plus" data-device="infoboxliste" data-set="addTask" data-value="#sendTask" data-ready="" style="width: auto; height: auto; cursor: pointer; color: rgb(170, 105, 0); background-color: transparent; opacity: 1;"><div class="linklefticon fa fa-plus fa-lg fa-fw"></div><div class="" style="display: inline-block; text-align: center; vertical-align: 5%; white-space: nowrap; padding: 3px; width: calc(100% - 33.4286px);"></div></div></div>


Wenn ich die Stelle im JS suche, dann sollte das der Bereich sein:


                                text += "</div><div class=\"tdtr\">";
                                text += "<div class=\"tditem notransmit\" data-type=\"input\" id=\"sendTask\"></div>";                 
           text += "<div data-type=\"link\" class=\"tdsend\" data-icon=\"fa-plus\" data-device=\"" + dev + "\" data-set=\"addTask\" data-value=\"#sendTask\"></div>";
                        } else {
                                text += "<div class=\"tdtr\">";
                                text += "<div class=\"tditem\" style=\"margin: 10px 10px; height:" + elem.data('height') +"; \">Keine Eintr&auml;ge vorhanden</div>";
                                text += "</div>";
                                text += "<div class=\"tdtr\">";
                                text += "<div class=\"tditem notransmit\" data-type=\"input\" id=\"sendTask\"></div>";                 
            text += "<div data-type=\"link\" class=\"tdsend\" data-icon=\"fa-plus\" data-device=\"" + dev + "\" data-set=\"addTask\" data-value=\"#sendTask\"></div>";


Ich tippe mal auf die letzte Zeile:

            text += "<div data-type=\"link\" class=\"tdsend\" data-icon=\"fa-plus\" data-device=\"" + dev + "\" data-set=\"addTask\" data-value=\"#sendTask\"></div>";

denn hier wird data-type="link" aufgerufen, was dann wohl zum js/widget_link.js gehen dürfte


thuranga

#29
ok, ich glaube ich habe die Stelle in deinem Widget:

        if (elem.isValidData('url')) {

Diese Abfrage hat ein Problem, denn elem.isValidData('url') ist zwar true, aber url hat nur als Inhalt "active"

Wenn du diese Abfrage so änderst, dass sie false wird, dann springt er in einen der else-Bedingungen und trägt den Inhalt des Input-Fields ohne Fehler ein


Wenn ich diese Zeile leicht ändere, dann passt es:

if (elem.isValidData('url') && elem.data('url') != "active") {

ist nur ein quick and dirty hack, aber sollte nur mal zeigen, dass es dann geht  ;)