Ny med Net...

Moderator: Telldus

Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Ny med Net...

Post by Gohper »

Jag har nyss skaffat mig en NET.
Sedan tidigare har jag kört med en gammal sticka, men vill inte ha en dator stående på bästa plats längre.
Jag vill INTE koppla mig till Live! Dels för att jag vill kunna själv samt för att jag bor på landet och adsl:en kan vara nere.
Det är ju tur att man har ett lokalt nät och kan hacka glatt ändå!

Jag vill ha en liten enkel server som kan tex nyregistrera i configfilen tex nya sensorer och knappar. Då med namnet "Unknown n" Där n är ett löpande nummer beroende på vad som finns i configfilen redan.
Sedan ska den lyssna på anrop på en annan port för själva styrningen, troligen någon form av Json-format.
Inte på det klara helt än hur det ska se ut, men det ska vara enkelt!
Jag vill senare hålla mig helst till ren C då jag är mest van vid det.
Men nu vid tester och att få förståelse så duger nästan vad som!

Jag har inte hunnit att pilla sådär jättemycket, men jag moddade ett litet python script som knackar på porten till det lokala interfacet:

Code: Select all

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket, re, sys

UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
UDPSock.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
UDPSock.setblocking(1)

# bort då jag inte fick kontakt först
#UDPSock.settimeout(3) 

UDPSock.bind( ('192.168.38.101', 42314) )

print "Autodiscover TellStick Net..."
UDPSock.sendto("D", ('255.255.255.255',30303))

p = re.compile('(.+):(.+):(.+):(.+)')
ip = None

while 1:
        try:
             (buf, (ip, port)) = UDPSock.recvfrom(2048)
        except socket.error, msg:
                break
        m = p.match(buf)
        print "%s" % buf
        print "Found %s on ip %s firmware version %s" % (m.group(1), ip, m.group(4))
        if (m.group(4) == '17'):
                print "  This has firmware X, lets use it"
                break
        else:
                print "  Not using correct firmware"
        ip = None

if (ip == None):
        print "No TellStick Net with correct firmware found"
        sys.exit(1)

# Här kommer moddningen!
# Väntar på en sändare att den ska sända (jag gör det med den gamla stickan)
# sparar meddelandet i en fil för vidare analys
# Registrera den här datorn som lyssnare!
UDPSock.sendto("B:reglistener", (ip,42314))
print "--------------------"
while 1:
        try:
             (buf, (ip, port)) = UDPSock.recvfrom(4096)
        except socket.error, msg:
                break
        print "-Received:"
        print " %s " % buf
        f = open("/root/tinput.txt","w")
        f.write(buf)
        f.close()
        print "--------------------"
sys.exit(0)
Filens storlek blir 60 tecken stor och innehåller föjande:

Code: Select all

7:RawDatah8:protocol7:arctech5:modelA:codeswitch4:dataiE0Ess
Nu ska jag försöka läraq mig hur jag kan tolka och sätta ihop rawdata.
Jag har kommit så långt att först är det 7 tecken, dvs "RawData", men sedan vad fasen är "h"?
"8" Stämmer ju med "protocol" som i sin tur är "7" långt och "arctech", "5" - "model" som är 10 långt och "codeswitch".
Sedan kommer "4" och "data" och till sist själva datat som är "i" långt, alltså 105 tecken långt.

Någon som kan förklara mer, "h" och datat hur avkodar men det på bra sätt?
Har läst en del men det är väldigt spretigt och rörigt, ingen samlad information direkt.
Mycket beror på dåligt med tid, att jag inte har kopplat riktigt hur det funkar.

Ja, ja, jag pillar väl vidare!
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Ny med Net...

Post by micke.prag »

Micke Prag
Software
Telldus Technologies
Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by Gohper »

Jo, där har jag läst redan!

Fram till send är det OK!
Men sedan?

Vad menas med $ och k?
Borde det inte vara fler tecken för fler kombinationer?

Är det så att $ ascii 36 bin 00100100 och k ascii 107 bin 00101011.
Vi börjar med $:
01 => 0
10 => 1

00 10 01 00 => 00 10 00
vad är då 00?

med k och samma resonemang:
00 10 10 11
00 11 11
här finns även 11 hur ska det tolkas?

Eller är jag helt ute och snurrar?
Lite många bollar i luften just nu, och sotarn kommer på brandsyn i morgon em,
måste fixa lite så att han inte blir så grinig som förra gången, eller så blir han det ändå en riktig svinpäls!
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Ny med Net...

Post by micke.prag »

Micke Prag
Software
Telldus Technologies
cay
Posts: 11
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by cay »

Skaffade också själv nyligen en Tellstick NET.

Jag försöker komma i gång med Nexas fjärrströmbrytare. Jag uppgraderade firmware till version 17.

Jag får följande data från fjärrkontrollen PET-910 för "ON":

Code: Select all

7:RawDatah8:protocol7:arctech5:modelC:selflearning4:datai2B076D90ss
7:RawDatah8:protocolC:everflourish4:datai76D90ss
7:RawDatah8:protocol7:arctech5:modelC:selflearning4:datai2B076D90ss
7:RawDatah8:protocolC:everflourish4:datai76D90ss
Efter litet forskning kom jag underfund med att:
2B076D90 = 721907088: house=11279798 group=0 method=1 unit=1

Därefter skickade jag följande UDP-paket till port 42314 på enheten:

Code: Select all

4:sendh8:protocol7:arctech5:modelC:selflearning5:houseiAC1DB6s4:uniti1s6:methodi1ss
Ingen reaktion. Jag prövade motsvarande för everflourish, inget händer.

Jag baserade mig på exemplet i https://github.com/telldus/tellstick-ne ... nt/send.py

Har formatet ändrats i firmware 17? Är källkoden på github aktuell för v17?

Tack.
Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by Gohper »

micke.prag wrote:http://developer.telldus.com/doxygen/TellStick.html

$ => 360us
k => 1070us
Och?? :wink:
Är det de enda som förekommer? eller? vad är hög vad är låg? Vem är du? Vem är jag? Vem vet inte jag??
360us vaddå? 1070us vaddå?

Fast i svaret jag får är det varen $ eller k...

Detta gör en faktiskt lmer förrvirrad än vanligt!

Jag har nu kommit hem och aett att det faktiskt lever lite på forumet.

Visst, det är Manchester-kodning på grejorna. Men det jag undrade över bla är 00 och 11

@cay:
Det är 17 jag kör oxå!
Jag har inte kommit till att sända än, även om jag har försökt med samma exempel som du,
Och det är den koden som jag pillat med när jag lyssnar!
Jo, jag lärde en brytare det som skicka i exemplet, och då funkar det!

Det känns som om det är något som fattas, något som man inte vill tala om!
Det är vad jag får känslan av, efter att ha sökt en hel del på nätet. Väl där så är man upptagen i en högre krets!

Hej och hå, nu rammlade det in en massa björkris, dottern viftar med det överallt, får rädda lite saker....
Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by Gohper »

Hunnit pilla lite...

Det är ju inte direkt självklart när man läser dokumentationen...

Om jag har för stått det hela rätt så om jag vill stänga av Nexa F1

F = X0X0, 1 = 0000,
lite dummy 0XX samt av 0
Det som ska översättas till tider senare är
X0X000000XX0

Då X = $kk$, 0 = $k$k
Så blir "tidssträngen" = $kk$$k$k$kk$$k$k$k$k$k$k$k$k$k$k$k$k$kk$$kk$$k$k !

Det som ska skickas blir
"4:sendh1:S49:$kk$$k$k$kk$$k$k$k$k$k$k$k$k$k$k$k$k$kk$$kk$$k$ks"
4:send ->OK
h -> ???, något gömd i det dunkla??
1:S->OK
verkar inte funka utan s:et på slutet...
Visst net lådan blinkar vakert rött när jag skickar detta, men lampan förblir tänd!

Hmm, testade en gång till, gissa lampan slocknade!! Hurra!

Men det var inte solklart hur det skulle gå till...
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Ny med Net...

Post by micke.prag »

Gohper wrote:Vad menas med $ och k?
För att sända signaler "manuellt" med TellStick Net måste signalen kodas av det program som skickar. Det du hänvisar är en del av det protokoll som används för att modulera signalen. Här motsvaras $ och k av den timing som du vill att TellStick Net ska modulera signalen med.
Gohper wrote:Är det de enda som förekommer? eller? vad är hög vad är låg? Vem är du? Vem är jag? Vem vet inte jag??
Kommunikationen som du vill åt är inofficiellt och icke supportad. För att använda det krävs förståelse för hur radiokommunikationen fungerar.
Är du inte intresserad att kommunicera på denna låga nivå har vi istället APIer du kan anropa direkt så du slipper modulera dina egna signaler.
Gohper wrote:h -> ???, något gömd i det dunkla??
Detta står beskrivet i dokumentationen jag skickade i första inlägget.
Micke Prag
Software
Telldus Technologies
Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by Gohper »

micke.prag wrote:Är du inte intresserad att kommunicera på denna låga nivå har vi istället APIer du kan anropa direkt så du slipper modulera dina egna signaler.
Jo, jag är intresserad, och jag har läst många protokollspecifikationer i mina dar, de här hör tyvärr inte till de bättre... .
Och ja, jag blir lite vresig när jag läser sådana, förmodligen en yrkesskada för att få fart på slöa indier och ryssar.
Tänk vad en liten pseudokodsnutt kan göra!
Protokollen i sig är ju inte speciellt avancerade, men det saknas lite betoningar på en del grejor.
Ett API medför alltid begränsningar.

Men jag lyckades igår även att släcka lampan.
Nu ska jag försöka översätta det jag har tagit emot, oxå från det äldre protokollet, egentligen den gamla stickan!

Sedan blir det likadant med det självlärande.

Det är så att jag har en massa väggsändare av äldre modell. Jag tror att alla utom en mottagare är av självlärande typ.

Så Tellstick Net med en tillhörande Pi ska få agera nav. Jag funderar på att använda Freedomotic och göra en plugin till den. Tyvärr är det dryga 15 år sedan jag knackade java i någon större utsträckning.

@Micke.prag:
Data i callbacket man får från Net är det "tidskodat" eller rena ettor och nollor?
En anna fråga, i protokollet används vanligtvis tiden T och 3T. Om T är 360uS så är ju 3T 1080uS, borde det inte vara l (ascii 108) som skickas? Eller är det för att minimera risken att komma ur synk?

Ska se om jag får tiden, men jag knackar lite anteckningar medans jag håller på. Kanske kan det bli en liten "Howto for dummies". Att jag antecknar beror på att jag har dåligt minne och det är bra att få ner även bök och stök för senare så kan det ha blivit en självklarhet!

En sida för Nexa äldre finns här och för nyare här.

Ja, då är det att jobba lite och sedan åka hem till skorstensfejarteknikern... .
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Ny med Net...

Post by micke.prag »

Gohper wrote:Data i callbacket man får från Net är det "tidskodat" eller rena ettor och nollor?
TellStick Net har redan gjort en avkodning så datan är "rena" ettor och nollor. Du kan hitta ett exempel på hur det sedan avkodas vidare till hus/enhetskod i funktionen ProtocolNexa::decodeDataSelfLearning() här:
http://developer.telldus.com/browser/te ... a.cpp#L179
Gohper wrote:En anna fråga, i protokollet används vanligtvis tiden T och 3T. Om T är 360uS så är ju 3T 1080uS, borde det inte vara l (ascii 108) som skickas? Eller är det för att minimera risken att komma ur synk?
Det var för länge sedan vi gjorde detta protokoll för att komma ihåg. Troligtvis är det uppmätt med en logikanalysator och taget därifrån. Du kan ju såklart testa sätta jämnt delbara tider och se om det fungerar bättre/sämre.
Micke Prag
Software
Telldus Technologies
Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by Gohper »

Bra! Tack!
Det förklarar att jag inte hittade några $ och k...
Det kan bli kvällens övningar med en pilsner kanske! :D
Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by Gohper »

Hemma nu och väntar på sotarn...

Märkligt, Net-lådan svarar inte alls, inte via nätet eller på fjärr.
Inte en reaktion. Bootade om den, då fungerar allt...
Något känt fel?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Ny med Net...

Post by micke.prag »

Gohper wrote:Något känt fel?
Nej, inget känt fel.
Micke Prag
Software
Telldus Technologies
cay
Posts: 11
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by cay »

Gohper wrote: Det som ska skickas blir
"4:sendh1:S49:$kk$$k$k$kk$$k$k$k$k$k$k$k$k$k$k$k$k$kk$$kk$$k$ks"
...
Hmm, testade en gång till, gissa lampan slocknade!! Hurra!
Jag testade med ditt exempel, röda lampan blinkar ej. Via Telldus Live fungerar allt normalt.

Är det något annat som behöver göras utöver detta efter att man fått tag på IP efter att man skickat "D" till broadcast-adressen:

Code: Select all

msg = "4:sendh1:S49:$kk$$k$k$kk$$k$k$k$k$k$k$k$k$k$k$k$k$kk$$kk$$k$ks"
UDPSock.sendto(msg,(ip,42314))
Någon slags autentikering eller rättigheter? Tellstick NET har ip 192.168.1.101 och jag skickar från samma lokala nät från 192.168.1.2.

S49 låter litet osäkert, det borde väl egentligen vara 48, och kanske hexadecimalt (30). h ... s betyder ju att det är frågan om en dictionary.
Jag har undersökt hur telldus live kommunicerar med tellstick net, men det görs tydligen över TCP och nån slags kryptering/hash verkar användas.

Tack.
Gohper
Posts: 21
Joined: Fri Mar 17, 2023 9:45 am

Re: Ny med Net...

Post by Gohper »

När du kör exemplet, vad säger den att det är för version?
Jag kör på den senaste, dvs 17.

Om du har 17, testa att boota om Net-lådan.

Jag Det funkade på min förut, men nu blinkar det inte.
Däremot svarar den på nätverksinterfacet.
Då borde det gå att starta om den vi nätverksinterfacet.

Det är UDP-paket som traskar till och från Net-lådan.

Jag ska pilla lite, och som du säger, borde inte s:et vara medräknat...
Får se hur mycket jag hinner innan grillen är klar för grillning.
Den har tagit nästan en timme att starta, det regnar gris ute!
Post Reply