NEWS
Iphone verliert immer das wlan???
-
@denjo sagte in Iphone verliert immer das wlan???:
/opt/iobroker/cmd/iphone.sh
Du kannst jetzt z. B. in das Verzeichnis wechseln und das skript auf der Konsole ausführen:
cd /opt/iobroker/cmd/iphone.sh ./iphone.sh
Dann siehst du schon mal ob es drundsätzlich läuft.
Das dann ggf. in den ioBroker einweben ist der nächste Step.
Kann dir @OliverIO bestimmt noch helfen. -
@thomas-braun
habe jetzt die meldungpi@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 pi@raspberrypi:/opt/iobroker/cmd $
das iphone ist gerade nicht da
-
@denjo sagte in Iphone verliert immer das wlan???:
curl: (52) Empty reply from server
hast du den simple api adapter installiert?
hast du die portnummer angepasst?
hast du datenpunkte angelegt, wo der status eingetragen werden soll?
hast du die ggfs datenpunktbezeichnungen in den zeilen mit curl angepasst? -
@oliverio ja alles gemacht
-
dann dein angepasstes script hier nochmal posten
deine Ausgabe sollte ungefähr so aussehen. Hier mit 2 IP-Adressen.
eine erreichbar, eine nicht erreichbarPING 192.168.1.209 (192.168.1.209) 56(84) bytes of data. From 192.168.1.85 icmp_seq=1 Destination Host Unreachable --- 192.168.1.209 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms Phone 192.168.1.209 is not present {"id":"0_userdata.0.Anwesenheit.192-168-1-209","value":0,"val":0}PING 192.168.1.225 (192.168.1.225) 56(84) bytes of data. --- 192.168.1.225 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms Phone 192.168.1.225 is detected!
-
function wakeIphone() { exec("bash /opt/iobroker/cmd/iphone.sh") } schedule ("*/3 * * * *", function(){ wakeIphone(); });
-
-
#!/bin/bash #Enter your ip of your device here DEVICES="192.168.178.82" for i in `echo $DEVICES`; do ping $i -c 1 hping3 -2 -c 10 -p 5353 -i u1 $i -q >/dev/null 2>&1 sleep 1 # Only arp specific device, grep for a mac-address status=`arp -an $i | awk '{print $4}' | grep "..:..:..:..:..:.."` #A mac will be 17 characters including the ":" IP=${i//./-} if [ ${#status} -eq 17 ]; then echo "Phone $i is detected!" curl http://192.168.178.98:5663/set/0_userdata.0.Anwesenheit.$IP?value=1 else echo "Phone $i is not present" curl http://192.168.178.98:5663/set/0_userdata.0.Anwesenheit.$IP?value=0 fi done
das ist der erstellte datenpunkt
"_id": "0_userdata.0.Anwesenheit",
pi@raspberrypi:/opt/iobroker/cmd $ pi@raspberrypi:/opt/iobroker/cmd $ ./iphone.sh --- 192.168.178.82 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms -bash: pi@raspberrypi:/opt/iobroker/cmd: Datei oder Verzeichnis nicht gefunden Phone 192.168.178.82 is not present curl: (52) Empty reply from server
-
ok
1.)
du musst auch noch die Datenpunkte für die IP anlegen.
Das macht das Script oder der simple api adapter nicht
also im iobroker Objektbaum den "Ordner" Anwesenheit auswählen,
dann + Knopf drücken
dann
192-168-178-82mit Typ Zeichenkette anlegen
2.)
Warum steht da in der curl zeile als port 5663?
wie ist die einstellung im iobroker bei deiner instanz für simple api?
bei mir sieht es so aus. also steht bei mir an der stelle der port 8087 -
@oliverio achso dachte anwesenheit muss ein objekt sein. jetzt habe ich einen ordner und da drin ein objekt "number" mit 192-168-178-82
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
ja den port hatte ich irgendwann mal geändert der ist wirklich 5663
-
@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?