Dwie sprawy -Geolokalizacja

cześć,
Mimo umieszczenie

payload !=data.old_state.state

takiego wpisu w node switch który monitoruje lokalizacje (czy się zmieniła) dostaje kilkuktrotne powiadomienia z tej samej lokalizacji mimo że jej nie zmieniam. Co jest nie tak.

Drugie pytanie dotyczy bramy i powiadomienia o jej zamknięciu, gdy na krótko zabraknie neta powiadomienie przychodzi mimo że jej stan się nie zmienił (nie dostaje powiadomienia o otwarciu tylko o zamknięciu)

Przyłącze się do tematy, po aktualizacji Node RED brak noda STOPTIMER który jest wykorzystywany w geolokalizacji? Czym to można zastąpić?

ja doinstalowałem i jest ok
image

2 polubienia

Nalezy czytać changelog przed aktualizacją

Normalnymi nodami:
Delay lub trigger

Możemy wrócić do pierwotnych pytań, ktoś coś ??

  1. To że nie zmieniasz lokalizacji, nie znaczy że device_tracker nie wyskakuje ze strefy. Dodaj na panel główny mapę i wstaw encję z której bierzesz położenie zobaczysz co i jak.
  2. w node red jest node zone. Skonfiguruj go i pominiesz tym samym payload !=data.old_state.state i pozostałe porównania. Tylko zone + funkcyjny z tekstem i call service. Sprawdź czy wtedy też będzie problem.

Może ma ktoś działające flow geolokalizacyjne u mnie mimo kikdziesięciu prób nie chce to działać

Najprościej jak się da

image

[{"id":"e35876ade10639e1","type":"api-call-service","z":"c576bc81.0ba12","name":"Telefon Andrzeja","server":"e623594f.2c1a08","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_gm1913","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":780,"y":4060,"wires":[[]]},{"id":"6c3d01d6eaa3b218","type":"function","z":"c576bc81.0ba12","name":"Witaj w domu","func":"var czas = new Date();\nvar czas_formatowany = czas.getHours() + \":\" + czas.getMinutes() + \":\" + czas.getSeconds() +\" - \"\nmsg.payload =\n{\n    \"data\":\n    {\n        \"title\": \"Lokalizacja\",\n        \"message\": czas_formatowany+\"Witaj w domu.\",\n        \"data\": \n        {\n        \"ttl\": 0,\n        \"priority\": \"high\",\n        \"icon_url\": \"/local/icon/witajwdomu.png\",\n        \"color\": \"green\",\n        }\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":4060,"wires":[["e35876ade10639e1"]]},{"id":"c7486081ad2fea8c","type":"ha-zone","z":"c576bc81.0ba12","name":"Strefa dom","server":"e623594f.2c1a08","version":0,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entities":["person.andrzej"],"event":"enter","zones":["zone.home"],"x":400,"y":4060,"wires":[["6c3d01d6eaa3b218"]]},{"id":"e623594f.2c1a08","type":"server","name":"HA","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"30"}]

Lub poprawione z tematu

thx nie sprecyzowałem o co mi chodzi ale bardziej mi chodziło o flow który Artur opisuje tu Kochanie gdzie są dzieci? Część III (arturhome.pl)

proszę bardzo - u mnie działa od początku wyśmienicie.
flows (4).json (10,5 KB)

thx - a czy na drugie pytanie ktoś zna odpowiedź, musiałem wyłączyć to powiadomienie.
Przypomne mój problem, gdy brama jest zamknięta gdy na chwile zerwie połączenie dostaje powiadomienie mimo że jej stan się nie zmienił odpowiednie “ptaszki” zaznaczone

Zainteresował mnie Twój flow, trochę go zmodyfikowałem do interesujących mnie informacji ale problem mam jak zapisać w samym nodzie call tekst z payload ?

zwykle robię to tuż przed wysłaniem w nodzie funkcji


ale za diabła nie potrafię tego utkać …

funktion 8 zacznij od

var wiad = msg.payload;

…później

"tts_test": wiad,
1 polubienie

dzięki @RobinI30 zrozumiałem to tak, że dołożyć do obecnego flow jeszcze jeden nod funkcyjny w którym jest konstrukcja wiadomości i wydaje się być ok

Można też inaczej - wszystko w jednej funkcji :slight_smile:

czyli coś tak ?

var entity_id = msg.data.entity_id;
var state = msg.zones[0].entity_id;

if (entity_id == "person.kasia" && state == "zone.home") {
    var wiad = "Kasia weszła do domu.";
    
} else if (entity_id == "person.agnieszka" && state == "zone.home") {
    var wiad = "Agnieszka weszła do domu.";
   
} else if (entity_id == "person.mariusz" && state == "zone.home") {
    var wiad = "Mariusz wszedł do domu.";
    
} else if (entity_id == "person.kasia" && state == "zone.fallowes") {
    var wiad = "Kasia weszła do biura fallowes.";
  
} else if (entity_id == "person.kasia" && state == "zone.szkola") {
    var wiad = "Kasia weszła do szkoły.";
   
} else if (entity_id == "person.agnieszka" && state == "zone.szkola") {
    var wiad = "Agnieszka weszła do szkoły.";
    
} else if (entity_id == "person.mariusz" && state == "zone.szkola") {
    var wiad = "Mariusz wszedł do szkoły.";
 
} else {
    var wiad = null;
 
}

msg.payload =
{
    "data": {
        "message": "TTS",
        "data": {
            "ttl": 0,
            "priority": "high",
            "tts_text": wiad,
            "media_stream": "music_stream"
        }
    }
};

return msg;

Trochę się rozpędziłeś

return null

Tylko przypadkiem funkcja nie zgłasza błędu. Deklarację zmiennych wykonuje się tylko raz var wiad
Kiedyś będziesz się dziwił, że kopiujesz działający kod i nie działa.
W “rozbiegówce” powinno być

var entity_id = msg.data.entity_id;
var state = msg.zones[0].entity_id;
var wiad = "";

Później już używasz tylko wiad.

1 polubienie