Odp: AVT5230 i termopmetr pod Linux z digitemp
A na pewno jest to /dev/ttyUSB1? ![]()
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Termometr → AVT5230 i termopmetr pod Linux z digitemp
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
A na pewno jest to /dev/ttyUSB1? ![]()
kawałek logu ![]()
[ 261.500000] usb 1-1.1.4: new full-speed USB device number 8 using ehci-platform
[ 261.640000] ftdi_sio 1-1.1.4:1.0: FTDI USB Serial Device converter detected
[ 261.640000] usb 1-1.1.4: Detected FT232RL
[ 261.650000] usb 1-1.1.4: Number of endpoints 2
[ 261.650000] usb 1-1.1.4: Endpoint 1 MaxPacketSize 16384
[ 261.660000] usb 1-1.1.4: Endpoint 2 MaxPacketSize 16384
[ 261.660000] usb 1-1.1.4: Setting MaxPacketSize 64
[ 261.680000] usb 1-1.1.4: FTDI USB Serial Device converter now attached to ttyUSB1
[ 262.520000] usb 1-1.1.4: USB disconnect, device number 8
[ 262.520000] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
[ 262.530000] ftdi_sio 1-1.1.4:1.0: device disconnected
[ 264.310000] usb 1-1.1.4: new full-speed USB device number 9 using ehci-platform
[ 264.450000] ftdi_sio 1-1.1.4:1.0: FTDI USB Serial Device converter detected
[ 264.450000] usb 1-1.1.4: Detected FT232RL
[ 264.460000] usb 1-1.1.4: Number of endpoints 2
[ 264.460000] usb 1-1.1.4: Endpoint 1 MaxPacketSize 16384
[ 264.470000] usb 1-1.1.4: Endpoint 2 MaxPacketSize 16384
[ 264.470000] usb 1-1.1.4: Setting MaxPacketSize 64
[ 264.500000] usb 1-1.1.4: FTDI USB Serial Device converter now attached to ttyUSB1
[ 270.180000] usb 1-1.1.2: new high-speed USB device number 10 using ehci-platform
Więc teoretycznie to.
przy podłączeniu się przez minicom do /dev/ttyUSB1 9600 8n1 "coś" leci "oomolomololn...." ale dość wolno być może dlatego że jest stała temperatura w pomieszczeniu a nietety robię to zdalnie i nie mam jak zmienić temperatury.
zapisało mi się coś w pliku no i nie wiem co dalej:
cat temp1.txt
˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙˙˙np˙˙np˙np˙np˙np˙np˙np˙np˙np˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙no˙no˙˙no˙˙np˙˙np˙˙np˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙np˙˙no˙˙np˙˙np˙˙np˙np˙np˙no˙no˙no˙˙no˙˙np˙o˙˙˙˙˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙np˙˙no˙˙np˙˙np˙˙no˙˙np˙˙no˙˙np˙˙np˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙˙o˙˙np˙no˙no˙no˙np˙np˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙˙p˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙˙˙o˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙np˙˙np˙˙np˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙np˙no˙np˙no˙no˙no˙np˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙np˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙˙˙˙˙˙˙˙˙˙no˙˙np˙˙no˙˙np˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙no˙no˙no˙o˙no˙no˙no˙no˙no˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙mo˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙mo˙˙mo˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙mo˙˙mo˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙mo˙˙no˙˙no˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙no˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙no˙˙no˙˙no˙˙no˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙no˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙lo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙lo˙˙mo˙˙mo˙˙mo˙˙mo˙˙lo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙lo˙˙mo˙˙mo˙˙mo˙˙lo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙lo˙˙lo˙˙ln˙˙lo˙˙mo˙˙lo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙mo˙˙lo˙˙mo˙˙mn˙˙
Skrypt i obrabiaj to. Zgodnie z tym co podałeś - mają być 2x255 jako nagłówek a później dwa bajty na temperaturę i następna dwa na drugą. Zrób z tego liczbę, podziel przez 10 i masz.
No i tu właśnie zaczyna się poważny problem, bo napisanie czego kolwiek jest dla mnie czarną magią. Od jakiej lektury mam zacząć, żebym mógł napisać taki skrypt?
kurs bash
pełno w necie a do tego zabawa metodą prób i błędów ![]()
Doczytałem się, że w bashu można używać nawiasy w nawiasach a w sh nie, rozumiem, że w gargoyle jest sh, więc jak mam przerobić ten skrypt aby był do sh.
if ((datain[0]==0xFF)&&(datain[1]==0xFF))
{
temp1 = datain[2];
temp1 |= (Int16)(datain[3]<<8);
temp2 = datain[4];
temp2 |= (Int16)(datain[5] << 8);
}
T1Out = temp1*0.1;
T2Out = temp2*0.1;
w gargoyle jest ash takie okrojony bash
a sh to shell
Jak chcesz pełnego bash'a to po prostu doinstaluj
To że w bashu są nawiasy oznacza że tablicę możesz zrobić, a nie że możesz dostać się do n-tego elementu ciągu znaków.
Czy ten skrypt wogóle będzie w stanie wyodrębnić temperaturę z tych krzaczków, bo tak sobie siedzę i czytam o tym bashu i nie bardzo wogóle mam wyobrażenie jak to ugryźć, nie wspominając żeby coś napisać.
Zrób hexdumpa z tego, będziesz miał liczby w hexach. A to już możesz dowolnie obrobić.
To jest mój częściowy wynik, czy to o to chodzi? Widać, że pewne wyniki się powtarzają. I jak ja to mam przeliczyć? ![]()
00000000 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 |..n.p...n.p...n.|
00000010 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
00000020 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 |n.p...n.p...n.p.|
00000030 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 |..n.p...n.p...n.|
00000040 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
00000050 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 |n.p...n.p...n.p.|
00000060 ff ff 6e 00 70 00 ff ff ff ff 6e 00 70 00 ff ff |..n.p.....n.p...|
00000070 6e 00 70 00 ff 6e 70 ff 6e 70 ff 6e 70 ff 6e 70 |n.p..np.np.np.np|
00000080 ff 6e 70 ff 6e 70 ff 6e 70 ff 6e 70 ff ff 6e 00 |.np.np.np.np..n.|
00000090 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
000000a0 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 |n.p...n.p...n.p.|
000000b0 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 |..n.p...n.p...n.|
000000c0 70 00 ff ff 6e 00 70 00 ff ff 6e 00 6f 00 ff ff |p...n.p...n.o...|
000000d0 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 |n.p...n.p...n.p.|
000000e0 ff ff 6e 00 70 00 ff ff 6e 00 6f 00 ff ff 6e 00 |..n.p...n.o...n.|
000000f0 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
00000100 6e 00 70 00 ff ff 6e 00 6f 00 ff ff 6e 00 70 00 |n.p...n.o...n.p.|
00000110 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 |..n.p...n.p...n.|
00000120 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
00000130 6e 00 6f 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 |n.o...n.p...n.p.|
00000140 ff ff 6e 00 70 00 ff ff 6e 00 6f 00 ff ff 6e 00 |..n.p...n.o...n.|
00000150 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
00000160 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 |n.p...n.p...n.p.|
00000170 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 |..n.p...n.p...n.|
00000180 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
00000190 6e 00 70 00 ff ff 6e 00 6f 00 ff ff 6e 00 70 00 |n.p...n.o...n.p.|
000001a0 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 |..n.p...n.p...n.|
000001b0 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
000001c0 6e 00 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 |n.p...n.p...n.p.|
000001d0 ff ff 6e 00 6f 00 ff ff 6e 00 70 00 ff ff 6e 00 |..n.o...n.p...n.|
000001e0 70 00 ff ff 6e 00 70 00 ff ff 6e 00 70 00 ff ff |p...n.p...n.p...|
Duuuużo czytania przed tobą ![]()
#!/bin/sh
T="6e 00 70 00"
b1=${T:0:2}
b2=${T:3:2}
dec=$(printf "%d\n" "0x$b2$b1")
echo $dec | awk -v t=$dec '{printf "%.2f\n",t*0.1}'
b1=${T:6:2}
b2=${T:9:2}
dec=$(printf "%d\n" "0x$b2$b1")
echo "$dec" | awk -v t=$dec '{printf "%.2f\n",t*0.1}'Jako, że jestem nowy na tym forum witam wszystkich forumowiczów.
Nie wiem czy temat jeszcze kogoś interesuje, ale chce się podzielić moimi doświadczeniami z podłączaniem AVT5330 do rutera z OpenWRT.
1. Układ montuje się jako /dev/ttyUSBx (x - to numer portu)
2. Ustawić za pomocą stty parametry pracy portu na "stty -F /dev/ttyUSBx 19200 cs8 -cstopb -parenb"
3. Do prób można zostawić zworkę JP1 (powoduje ona cykliczny co 2s odczyt temperatury i wysyła do terminala).
Po podłączeniu układu do rutera wydać polecenie: "cat /dev/ttyUSBx". Na ekranie terminala będą pojawiać się wyniki
w formacie:
T1= 11.1'C T2= 22.2'C T3= 33.3'C T4= 44.4'C T5= 55.5'C T6= 66.6'C T7= -77.7'C T8=-188.8'C
W sytuacji kiedy zworka JP2 jest zwarta na początku pojawi się jeszcze nr pomiaru i czas pomiaru.
4. Do pracy ze skryptem lepiej jest usunąć zworki.
W celu przeprowadzenia próby w "trybie ręcznym" w jednym terminalu wpisać "cat /dev/ttyUSBx", a w drugim
"echo ">T" > /dev/ttyUSBx". Po wydaniu polecenia echo... polecenie cat... powinno pokazać wynik ja w punkcie 3.
Podany sposób można wykorzystać w skrypcie.
Do przypisania temperatur zmiennym w skrypcie można użyć następujących poleceń:
cat /dev/ttyUSBx > /tmp/temp.txt
t1=`cut -c 4-9 temp.txt | tr -d ' '`
t2=`cut -c 17-22 /tmp/temp.txt | tr -d ' '`
t3=`cut -c 30-35 /tmp/temp.txt | tr -d ' '`
t4=`cut -c 43-48 /tmp/temp.txt | tr -d ' '`
t5=`cut -c 56-61 /tmp/temp.txt | tr -d ' '`
t6=`cut -c 69-74 /tmp/temp.txt | tr -d ' '`
t7=`cut -c 82-87 /tmp/temp.txt | tr -d ' '`
t8=`cut -c 95-100 /tmp/temp.txt | tr -d ' '`
Teraz można obrabiać te dane w dowolny sposób.
Mam nadzieję, że komuś to się przyda, jeśli nie to sorry za odgrzewanie starych kotletów.
Pozdrawiam
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Termometr → AVT5230 i termopmetr pod Linux z digitemp
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc