NEWS
Iphone verliert immer das wlan???
-
@denjo sagte in Iphone verliert immer das wlan???:
curl: (52) Empty reply from server
irgendwas stimmt dann an dem link nicht oder am datenpunkt.
warum hast du jetzt number genommen?
@oliverio sagte in Iphone verliert immer das wlan???:
dann
192-168-178-82
mit Typ Zeichenkette anlegenbitte aufmerksam lesen und genau das machen was da steht, sonst kann sich das hier nochmal hinziehen.
dann bitte in die datenpunkteinstellung gehen und im reiter "raw" den kasten markieren und kopieren.
bei mir sieht es so aus{ "_id": "0_userdata.0.Anwesenheit.192-168-1-209", "type": "state", "common": { "name": "IPhone", "role": "", "type": "string", "read": true, "write": true, "desc": "Manuell erzeugt", "def": "", "custom": { "history.0": { "enabled": true, "changesOnly": true, "debounce": 0, "maxLength": "10", "retention": "31536000", "changesRelogInterval": 0, "changesMinDelta": 0, "aliasId": "" } } }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1626116496107, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Falls der _id und der type und der common.type nicht ähnlich aussieht,
dan lösche den ganzen Ast nochmal,
markiere 0_userdata.0 drücke dann den Plus-Knopf und gebe das folgende einAnwesenheit.192-168-178-82
Es wird dann zwar genauso aussehen, aber die innere Struktur ist dennoch eine andere.
-
@oliverio das ist das objekt
{ "common": { "name": "192-168-178-82", "desc": "Manuell erzeugt", "role": "state", "type": "string", "read": true, "write": true, "def": "" }, "type": "state", "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1638458158185, "_id": "0_userdata.0.Anwesenheit.192-168-178-82", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
und das kommt jetzt wieder
pi@raspberrypi:/opt/iobroker/cmd $ ./iphone.sh PING 192.168.178.82 (192.168.178.82) 56(84) bytes of data. From 192.168.178.98 icmp_seq=1 Destination Host Unreachable --- 192.168.178.82 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms Phone 192.168.178.82 is not present curl: (52) Empty reply from server
jetzt ist meine freundin wieder da und ich habe die meldung
pi@raspberrypi:/opt/iobroker/cmd $ ./iphone.sh PING 192.168.178.82 (192.168.178.82) 56(84) bytes of data. 64 bytes from 192.168.178.82: icmp_seq=1 ttl=64 time=5.56 ms --- 192.168.178.82 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 5.560/5.560/5.560/0.000 ms Phone 192.168.178.82 is detected! curl: (52) Empty reply from server
aber am objekt ändert sich nix
-
@denjo
irgendwas stimmt mit dem simple-api adapter nichtich habe gerade mal ausprobiert was passiert wenn der datenpunkt einen falschen namen hat oder wenn der simpleapi adapter nicht läuft
curl: (7) Failed to connect to 192.168.1.85 port 8087: Verbindungsaufbau abgelehnt
"error: datapoint \"0_userdata.0.Anwesenheitx.192-168-1-225\" not found"
das sind jetzt die rückmeldungen an der stelle wo bei dir curl: (52) Empty reply from server
dazu finde ich aber hier im forum keine hilfreicdhe antwortprobier mal das folgende direkt auf der kommandozeile
curl http://192.168.1.85:8087/get/0_userdata.0.Anwesenheit.192-168-1-209
natürlich die ip und port des iobrokers anpassen, sowie den Datenpunktnamen anpassen
Beachte das get anstatt des setda sollte sowas zurückkommen
{"val":0,"ack":false,"ts":1626116496107,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1638449061416,"_id":"0_userdata.0.Anwesenheit.192-168-1-209","type":"state","common":{"name":"IPhone","role":"","type":"string","read":true,"write":true,"desc":"Manuell erzeugt","def":"","custom":{"history.0":{"enabled":true,"changesOnly":true,"debounce":0,"maxLength":"10","retention":"31536000","changesRelogInterval":0,"changesMinDelta":0,"aliasId":""}}},"native":{},"acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}}
probiere auch mal andere existierende Datenpunkte aus.
-
pi@raspberrypi:~ $ curl http://192.168.178.98:5663/get/0_userdata.0.Anwesenheit.192-168-178-82 {"val":"","ack":true,"ts":1638458158185,"q":32,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1638458158198,"common":{"name":"192-168-178-82","desc":"Manuell erzeugt","role":"state","type":"string","read":true,"write":true,"def":""},"type":"state","_id":"0_userdata.0.Anwesenheit.192-168-178-82","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}}pi@raspberrypi:~ $
ich habe auch gerade gesehen das ich zwei dateien jetzt in den cmd ordner drin habe
iphone.sh
iphone.sh.save -
@denjo sagte in Iphone verliert immer das wlan???:
curl http://192.168.178.98:5663/get/0_userdata.0.Anwesenheit.192-168-178-82
und jetzt auf der kommandozeile
curl http://192.168.178.98:5663/set/0_userdata.0.Anwesenheit.192-168-178-82?value=1
oder eine andere zahl als 1 damit du veränderung siehst
-
@oliverio ja hat sich auf 1 geändert
also langsam schnall ich das auch so alles wie das funktioniert aber bin ratlos
-
für was brauchst du denn diese true false?
ich haben meine anwesenheit z.b. mit dem yahka adapter geregelt, funktioniert super.
im yahka ein gerät erstellt und am iphone eine automation bei ankommen und verlassen -
dann tausche bitte mal den if/fi teil gegen folgendes aus und poste das ergebnis
if [ ${#status} -eq 17 ]; then echo "Phone $i is detected!" echo "curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=1" curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=1 else echo "Phone $i is not present" echo "curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=0" curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=0 fi
natürlich wieder ip und datenpunkt an allen stellen anpassen
es sind 2 zusätzliche zeilen eingefügt, die den curl befehl mit den parametern ausgibt, so das wir sehen können ob da ein fehler ist
-
@oliverio habe ich gemacht hier die ausgabe
pi@raspberrypi:~ $ /opt/iobroker/cmd/iphone.sh PING 192.168.178.82 (192.168.178.82) 56(84) bytes of data. 64 bytes from 192.168.178.82: icmp_seq=1 ttl=64 time=29.3 ms --- 192.168.178.82 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 29.261/29.261/29.261/0.000 ms Phone 192.168.178.82 is detected! curl http://192.168.178.98:5663/set/0_userdata.0.Anwesenheit.192-168-178-82?value=1 {"id":"0_userdata.0.Anwesenheit.192-168-178-82","value":1,"val":1}
jetzt ändert sich das objekt auch auf 1 wenn ich das eingebe
/opt/iobroker/cmd/iphone.sh
und im log steht das
simple-api.0 1315 2021-12-03 02:45:11.207 info State value to set for "0_userdata.0.Anwesenheit.192-168-178-82" has to be type "string" but received type "number"
jetzt habe ich das objekt von string auf number geändert und alles läuft perfekt
-
@denjo
Dann war in deinem skript noch was krumm wenn es jetzt funktioniert.Und die anwesenheitserkennung funktioniert jetzt?
-
@oliverio ja jetzt funktioniert es tadellos. Danke für deine Mühe
-
@oliverio mal so ne frage kann man nicht vielleicht einen Adapter daraus bauen, also wenn ich es könnte würde ich es selber machen. Es haben ja viele wie ich lese dieses Problem mit den wlan von den iPhone's.
-
@denjo
das wäre im radar-adapter gut aufgehoben,
ich meine ich habe da mal was geschrieben,
aber es wurde nicht umgesetzt.das Problem hat irgendwie nicht jeder, daher ist es nicht dringlich.
bis auf die Installation eines weiteren Tools wäre der Befehl für die anderen nicht schädlich.https://forum.iobroker.net/topic/28955/anwesenheit-erkennen/22?_=1639066408175
-
Hallo Zusammen,
ich hole das Thema mal aus der Versenkung und hoffe auf einen guten Ratschlag. Ich wollte das jetzt bei mir umsetzten doch das gleiche Skript liefert auf zwei verschiedenen Systemen unterschiedliche Ergebnisse. Ich hoffe jemand hat eine Idee woran das liegen könnte.
Auf System 1 funktioniert augenscheinlich alles einwandfrei. aber System 2 liefert "Phone is detected" obwohl der Ping fehlgeschlagen ist.
System 1 (Ubuntu):
#: ./iphone.sh PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. From 192.168.100.205 icmp_seq=1 Destination Host Unreachable --- 192.168.100.145 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms Phone 192.168.100.145 is not present {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":false,"val":false}
System 2 (Docker Container)
#: ./iphone.sh PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. From 192.168.100.200 icmp_seq=1 Destination Host Unreachable --- 192.168.100.145 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms Phone 192.168.100.145 is detected! {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":true,"val":true}
-
@prorun
und welche ip hat der container? -
@oliverio 192.168.100.200 - aber das Schreiben in den DP funktioniert einwandfrei auf beiden Systemen auch vom einen System in das andere aber das ist nicht das Problem. Unerklärlich ist für mich jedoch warum aus dem container heraus das Gerät als detected gilt obwohl der Ping auf einen Fehler läuft
Docker Container - iPhone im WLAN:
PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. 64 bytes from 192.168.100.145: icmp_seq=1 ttl=64 time=344 ms --- 192.168.100.145 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 344.215/344.215/344.215/0.000 ms Phone 192.168.100.145 is not present {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":false,"val":false}
Docker Container - iPhone NICHT im WLAN:
PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. --- 192.168.100.145 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms Phone 192.168.100.145 is detected! {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":true,"val":true}
Ubuntu - iPhone im WLAN:
PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. 64 bytes from 192.168.100.145: icmp_seq=1 ttl=64 time=206 ms --- 192.168.100.145 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 205.736/205.736/205.736/0.000 ms Phone 192.168.100.145 is detected! {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":true,"val":true}
Ubuntu - iPhone NICHT im WLAN:
PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. From 192.168.100.205 icmp_seq=1 Destination Host Unreachable --- 192.168.100.145 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms Phone 192.168.100.145 is not present {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":false,"val":false}
verwendet wird exakt die gleiche Skript-Datei. Der Container bringt immer das Gegenteil als Antwort. Verdrehte Welt im Docker?
-
Dann für bitte vor der Zeile mit dem if Status folgendes ein
echo "status: $status "
Dann mal schauen was da steht wenn Ping packet loss hat.
Grundsätzlich kann das schon sein, in den Experimenten hat sich gezeigt das hping3 allein auch nicht zuverlässig funktioniert. Erst in der Kombination mit ping klappt es dann.
Ich vermute Ping schlägt fehl, hping3 lässt gerät aufwachen, meldet sich im Netz und ist dann in der arp table verzeichnet.Ich gehe jetzt davon aus das grundsätzlich der Status schon funktioniert, du aber nicht verstehst warum?
Du kannst hier mal lesen
https://de.wikipedia.org/wiki/Address_Resolution_Protocol?wprov=sfti1 -
@oliverio das erklärt aber alles nicht warum das iPhone als detected erkannt wird obwohl es nicht im Netz ist, oder übersehe ich da noch etwas?
-
@oliverio wenn das iphone im netz ist (in dem moment auch per ping erreichbar) sieht es im Container wie folgt aus
PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. 64 bytes from 192.168.100.145: icmp_seq=1 ttl=64 time=56.2 ms --- 192.168.100.145 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 56.162/56.162/56.162/0.000 ms status: xx:xx:62:aa:xx:xx xx:xx:62:aa:xx:xx Phone 192.168.100.145 is not present {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":false,"val":false}
Nehme ich das Gerät dann aus dem Netz sieht das Ergebnis ungefähr 10 sekunden noch genauso aus obwohl 100% packet loss
PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. --- 192.168.100.145 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms status: xx:xx:62:aa:xx:xx xx:xx:62:aa:xx:xx Phone 192.168.100.145 is not present {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":false,"val":false}
Aber dann nach wie gesagt ungefähr 10 sekunden (offensichtlich ist dann die mac aus der arp tabelle raus) kommt zu 100% packet loss noch +1 errors hinzu
PING 192.168.100.145 (192.168.100.145) 56(84) bytes of data. From 192.168.100.200 icmp_seq=1 Destination Host Unreachable --- 192.168.100.145 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms status: xx:xx:62:aa:xx:xx Phone 192.168.100.145 is detected! {"id":"0_userdata.0.Eigene_Objekte.Anwesenheit.Phony13_alive","value":true,"val":true}
Warum detected wenn iPhone nicht da? funktioniert hping3 vielleicht nicht richtig im container?
-
@prorun ich mein damit arbeiten lässt sich ja trotzdem - dann bin ich halt Abwesend wenn das Skript detected auswirft aber über eine kleine Erklärungshilfe wäre ich trotzdem sehr glücklich. ist ja auch so das es auf dem ubuntu genaus anderherum also richtig rum funktioniert also muss doch im container irgendwas quer laufen, oder?